2012-03-16 2 views
0

가능한 한 많은 그룹과 일치하는 정규 표현식을 구성 할 수 있습니까? 문자열 일치가 중지 될 때 포기할 수 있습니까? 예를 들면 :Python 정규 표현식에서 일부 그룹 일치하기

import re  
s = 'a b' 
m = re.search('(\w) (\w) (\w)') 

I (1) (3) 없음 포함하지하는 'B'와 m.group를 포함하는 'A'와 m.group (2)를 포함하는 m.group을하고 싶습니다.

하지만 re.search()에는이 경우 그룹이 없습니다.

답변

3

패턴은 하나 개의 단어 문자 다음에 한 칸 뒤에 한 단어 문자 뒤에하지만 문자열이 너무 만 한 글자, 한 칸, 한 문자, 한 칸 뒤에 정확히 하나 개의 단어 문자를 찾고 있습니다 결코 일치하지 않을 것이다. 임의의 선택 부분을 허용하도록 패턴을 수정해야합니다.

import re 
s = 'a b' 
m = re.search('(\w) (\w)((\w))?', s) 

최종 공간 및 (\ w) 그룹 주위에 괄호가 있음을 유의하십시오. 그들은 다른 그룹을 만듭니다.이 그룹은 ? 수정 자에 의해 선택 가능합니다. 당신이 일치하는 객체에 표시이 별도의 그룹을 원하지 않는 경우, 당신은 그것을 "비 캡처"그룹 만들 수 있습니다

m = re.search('(\w) (\w)(?: (\w))?', s) 

m 이제 (선택 사항) 최종 공간 그룹을 포함하지 않으며, 단어 문자는 일치하는 모든 단어 문자에만 적용됩니다.

관련 문제