2012-12-07 3 views
7

정규식을 컴파일 할 때 주석을 넣으려고하고 있지만 re.VERBOSE 플래그를 사용할 때 더 이상 matchresult를 얻지 못합니다. (파이썬 3.3.0를 사용하여) Python 정규식 (re.VERBOSE 사용)이 작동하지 않음

전 :

regex = re.compile(r"Duke wann", re.IGNORECASE) 
print(regex.search("He is called: Duke WAnn.").group()) 

출력 : 듀크 보자구

후 :

regex = re.compile(r''' 
Duke # First name 
Wann #Last Name 
''', re.VERBOSE | re.IGNORECASE) 

print(regex.search("He is called: Duke WAnn.").group())` 

출력 : AttributeError : 'NoneType'객체 'group'속성이 없습니다.

+0

를 참조가 : 'r ''이것은 틀렸다 '' ''. 올바른 구문은 r을 큰 따옴표와 함께 사용해야합니다 :'r "" "이것은 맞습니다" ""'. [파이썬에서 raw 다중 행 문자열을 올바르게 작성하는 방법] (https://stackoverflow.com/questions/46003452/how-to-correctly-write-a-raw-multiline-string-in-python) – smci

답변

8

이때 공백 (즉, 당신의 발현을 효과적으로 DukeWann입니다) 무시됩니다, 그래서 당신은 거기에 공간이 거기에 있는지 확인해야합니다 : 사실 그 원시 여러 문자열에 대한 잘못된 구문입니다

regex = re.compile(r''' 
Duke[ ] # First name followed by a space 
Wann #Last Name 
''', re.VERBOSE | re.IGNORECASE) 

http://docs.python.org/2/library/re.html#re.VERBOSE

+0

을 참조하십시오. 모든 리터럴 공백을 정규식에서'[]'로 대체해야합니까? 이것은 제가 말할 수있는 한 사실 인 것 같습니다. –

+0

@Brad 예. 그들은 명시 적으로 언급 된 방법 중 하나에 따라 명시해야합니다. –

+0

실제로 원시 다중 행 문자열의 구문이 잘못되었습니다. 'r' ''이것이 틀립니다 '' ''. 올바른 구문은 r을 큰 따옴표와 함께 사용해야합니다 :'r "" "이것은 맞습니다" ""'. [Python에서 raw 다중 행 문자열을 올바르게 작성하는 방법] (https://stackoverflow.com/questions/46003452/how-to-correctly-write-a-raw-multiline-string-in-python) – smci

관련 문제