2012-03-04 2 views
1

파이썬 매치 패턴에서 과 같은 숫자로 역 참조 한 후 1과 같은 리터럴 숫자와 어떻게 일치합니까?파이썬 re.match 그룹 : 숫자 뒤의 숫자

이 대체 패턴에서 사용할 수있는 \g<1> 구문을 시도했지만 내 검색 패턴에서 작동하지 않습니다.

다음과 같은 다소 특별한 작업을 수행하는 기능을 사용하여 해결하고 싶은 더 큰 문제가 있습니다. 작업은 패턴을 동적으로 구성하여 각 패턴이 특정 위치의 반복 숫자와 나머지 위치의 특정 숫자와 일치하도록합니다.

답변

2

\g<1> 구문이 필요하지 않은 것으로 나타났습니다. 대신 여러 기술 중 하나를 사용하여 \2 같은 숫자 역 참조를 뒤에 오는 9과 같은 숫자로 구분할 수 있습니다. 여기 세 이러한 기술은 다음

  • 비 캡처 그룹 (?:\2)9
  • 역 참조 뒤에 만 자리를 포함하는 달리 불필요한 문자 클래스를 사용하여 하나 \2{1}9
  • 의해 달리 필요 정량 \2[9]
+0

'{1}'에 대한 올바른 사용을 찾기 위해 +1! 혼란에 덧붙여, 일부 정규 표현식은 대부분의 경우 이러한 대안을 필요로하지 않습니다. 캡쳐 그룹이 두 개 또는 세 개이면 '\ 29'는 그룹 # 2에 대한 역 참조로 해석되고 그 뒤에 리터럴 '9'가옵니다. 그것이 파이썬에 사실이라면 나는 알지 못한다. 어떤 기술을 사용 하든지, 당신이 그것을 논평 할 것을 제안합니다. –

2

글자 그대로 문자 클래스 \1[1] 또는 그룹 \1(1)에 일치시킬 숫자를 입력하여 괄호 또는 p 등호는 역 참조에서 숫자를 분리합니다.

+0

투표가 중단되지 않았지만, 그룹을 캡처하지 않는 것이 더 좋을 것입니다 :'\ 1 (? : 1)'. – EOL