2012-02-21 3 views
1

정규 표현식을 통과 할 수있는 3 가지 가능한 형식이 있습니다. 모두 일치시켜야합니다.문자열에 선택적 텍스트가있는 파이썬의 정규 표현식

text1 
text1 text2 
text1 text2 ;text3 

지금까지 (.*?)(?:\s)(.*)'text1 text2'을 위해 일하고있어,하지만 세미콜론가있는 경우 내가 할 세 가지 경우를 처리 할 수 ​​있습니다. 어떤 아이디어?

+0

원하는 일치하는 텍스트는 실제로 text1, text2 및 text3이 아닙니까? 일치시킬 텍스트 양식에 대한 자세한 설명을 제공 할 수 있습니까? – macduff

답변

5

다음은 또한 올바른 그룹으로 '텍스트 1', '텍스트 2'와 '텍스트 3'를 둘 것, 작동합니다 :

^(.+?)(?:\s(.*?)(?:\s;(.*))?)?$ 

이 작업 방법을 참조하십시오 : 여기

http://www.rubular.com/r/IyPyF3wXLx는 설명입니다 :

^    # start of string 
(.+?)   # put text1 in group 1 
(?:    # start an optional non-capturing group 
    \s(.*?)  # space followed by text2, put text2 in group 2 
    (?:   # start an optional non-capturing group 
    \s;(.*)  # space and semicolon, followed by text3, put text3 in group 3 
)?    # end of optional non-capturing group 
)?    # end of optional non-capturing group 
$    # end of string 

중간에 옵션 그룹들이 존재하는 경우 정규식은 텍스트 2 및 텍스트 3을 일치시킬 수 있지만, 그렇지 않은 경우 여전히 일치합니다.