2012-12-20 2 views
14

다음은 사례입니다. 로그 파일에서 다음과 같은 패턴을 찾고 있습니다.정규식과 OR 연산자가 파이썬에서 그룹화되지 않았습니까?

모든 문자열은 AB_N 또는 CDE_N의 형식입니다. 및 CDE은 고정 문자이며 그 뒤에 밑줄이옵니다. N은 2 또는 3 개의 숫자 일 수 있습니다.

나는 (AB|CDE)_\d{2,3}을 시도하지만 그룹을 반환합니다. 나는 AB 또는 CDE이어야하고 AC 또는 FEG이 아니기 때문에 \w{2,3}\d{2,3}을 수행 할 수 없습니다. 괄호를 생략해도 깨지기 쉽습니다. 나는 해결책이 간단하다고 확신하지만 파이썬과 정규 표현식에 익숙하지 않으며 이것을 이해할 수 없다.

+0

당신은 그룹의 전체 일을 마무리 할 수 ​​있습니다'((AB | CDE) _ \ D {2,3})', 첫 번째 그룹은'이다 AB_123'와 두 번째는'단지 AB'입니다. –

답변

3

비 캡처 그룹 구문은 (?:...)입니다. 따라서 (?:AB|CDE)_\d{2,3}하십시오. 다른 모든 것들과 함께 documented입니다. 정규식에서 괄호 안에 ?:

+0

이것은 작동하지 않았지만 (? AB | CDE)를 사용했습니다. – pedram

+2

오타, 오타입니다. 그러나 그것은'(? : AB | CDE)'이어야하므로 당신도 하나 만든 것처럼 보입니다. – BrenBarn

+1

'(? : abc | def | ghi | xyz)'같은 것을 할 수 있습니까? – qed