정규식을 사용하여 'my car'문자열을 찾고 그 전에 4 단어까지 검색합니다. 내 참조 텍스트는 다음과 같습니다Python 3 정규식 단어 경계가 분명하지 않습니다.
my house is painted white, my car is red.
A horse is galloping very fast in the road, I drive my car slowly.
내가 정규식 사용하는 경우 :
re.finditer(r'(?:\w+[ \t,]+){0,4}my car',txt,re.IGNORECASE|re.MULTILINE)
나는 예를 results.For 예상 점점 오전 : 집에 흰색 페인트되어, 내 차
나는를 사용하는 경우 정규식 : 만 얻고
re.finditer(r'(?:\w+\b){0,4}my car',txt,re.IGNORECASE|re.MULTILINE)
: '내 차'와 '내 차' , 난 점점 아니에요 그 전에 네 단어까지. \ b를 사용하여 {0,4} 그룹의 단어와 일치시킬 수없는 이유는 무엇입니까?
'\의 b'는이 단어 후 등 공간/쉼표를 일치하지 않습니다 제로 폭 주장이다. – anubhava
단어 경계에 대한 정규 표현식은'(? :(? :^| (? <= [^ a-zA-Z0-9 _])) (? = [a-zA-Z0-9 _]) | (? = $ a-zA-Z0-9 _]))) 아마도 당신이 만든 실수를 발견 할 수 있습니다. – sln