\b
은 공백이 아닌 길이가 0 인 단어 경계와 일치합니다. 당신은 더 이런 식으로 뭔가를 찾고 :
이
/first\b.\bsecond/.match('first second')
이의 모든 문자 (.
)와 일치합니다 first
사이 second
만큼 양쪽에 단어 경계가있다. (당신이 스스로 경계 단어와 일치하는 길이 제로의 수표를 사용할 필요가 없기 때문에)
그러나,이 단어 경계가 일반적으로 사용되는 방법이 아닙니다. \b
은 본질적으로 단어 문자 뒤에 단어가 아닌 문자를 찾고 있습니다. 그래서 대신에, 당신은 단지 second
에 first
에서 t
와 s
사이 - 비 단어 문자를 찾을 수 :
/first\Wsecond/.match('first second')
이것은 당신이 현실적으로 정확하게 첫 번째 예와 동일하다 ...하지만 아마 공백을 일치 시키려면이 같은 것을 사용할 수 있습니다 WiktorStribiżew의 세 번째 예 @
/first\ssecond/.match('first second')
은 (시작과 끝) 단어 경계의 최고 사용하는 방법을 보여줍니다. 이는 전후에 어떤 것도 일치시키지 않아서 길이가 0 인 테스트가 도움이되기 때문입니다. 그렇지 않으면 위의 예는 first secondary
과 일치 할 수 있습니다.
/\bfirst\ssecond\b/.match('first second')
출처
2016-10-12 20:03:28
Sam
이 http://stackoverflow.com/questions/39875620/python-regex-words-boundary-with-unexpected-results/39876126#39876126를 참조하십시오 : 결국, 내가 좋아하는 표현을 사용하십시오. '\ b'는 공백과 일치하지 않으며'first'와'second' 사이에 하나가 있습니다. –
'\ b'은 다른 장소에서의 유용성이 의심 스럽기 때문에 보통 표현의 시작이나 끝에서만 사용됩니다. – tadman
@tadman'\ b'이 표현의 중간에 유용 할 수있는 기회가 있습니다 만, 실제 사례를 생각할 수 없을 정도로 희귀합니다. '/ [az] \ b [az] /' – Sam