나는 다음과 같은 작은 Python 스크립트가 있습니다. 하지만 정규식을 약간 조정하고 마지막을 제거하면. 다음과 같이 작동합니다 :내 단어 경계 정규식에 무슨 문제가 있습니까? 그것은 일치하지 않는 것</p> <pre><code>import re def main(): thename = "DAVID M. D.D.S." theregex = re.compile(r"bD.D.S.b") if re.search(theregex, thename): print ("you did it") main() </code></pre> <p>:
\bD\.D\.S\b
나는 정규 표현식을 이해하는 데 꽤 능숙하다고 느끼지만, 이것은 당황 스럽습니다. \ b (단어 경계)에 대한 나의 이해는 영숫자가 아닌 (그리고 밑줄) 영 (0) 너비 일치이어야합니다.
D.D.S.
내가 무엇을 놓치고 : 그래서
"\bD\.D\.S\.\b"
일치 기대?
후 비 단어에 대한 검사'R '와 함께 탈출을 두 번 피 \ bD \ .D \ .S \. \ b;'하지만 점은 비 단어 문자이므로'\ b' (단어 경계)는 점 뒤에 매치 될 수 없습니다. – anubhava
단어 문자 옆에 \ b 만 사용할 수 있다는 의미입니까? 그래서 내가 "하이퍼!" 나는 정규 표현식을 가질 수 없다 "hyper! \ b" – sniperd
단어가 이미'!'에서 끝났기 때문에 그렇다. '\ b'는'하이퍼 (hyper) '와'!'사이의 위치를 선언하는 데 사용할 수 있습니다. – anubhava