re 모듈을 사용하는 Python 정규식의 단어 경계(b)
re 모듈을 사용하여 Python에서 정규식으로 작업할 때 다음을 수행할 수 있습니다. 단어 경계 표현(b)의 동작과 관련하여 혼란이 발생합니다. 이 답변은 단어 경계를 일치시키려고 할 때 사용자가 직면하는 일반적인 문제를 해결합니다.
일반적으로 단어와 다른 문자 사이의 경계를 식별하는 데 사용되는 b 표현식은 특정 시나리오에서 실패하는 것 같습니다. 다음 예를 고려하십시오.
>>> x = 'one two three' >>> y = re.search("\btwo\b", x)
예상으로는 일치 개체가 반환되어야 하지만 대신 None입니다. 이 당혹스러운 결과는 Python에서 b가 지원되는지 여부에 대한 의문으로 이어질 수 있습니다.
그러나 문제는 b 표현식 자체가 아니라 작업 중인 문자열에 있습니다. Python에서 백슬래시가 포함된 문자열은 이스케이프 시퀀스로 특별한 처리가 필요합니다. 이를 방지하려면 원시 문자열을 사용해야 합니다.
>>> x = 'one two three' >>> y = re.search(r"\btwo\b", x) >>> y <_sre.SRE_Match object at 0x100418a58>
"r" 접두사를 추가하면 백슬래시가 b 표현식을 포함하여 리터럴 문자로 처리되는 원시 문자열을 생성할 수 있습니다. 이렇게 하면 Python이 단어 경계를 올바르게 일치시킬 수 있습니다.
또는 re.compile() 함수를 사용하여 일치하려는 단어가 포함된 정규식 패턴을 생성할 수도 있습니다.
word = 'two' k = re.compile(r'\b%s\b' % word, re.I)
이 접근 방식을 사용하면 여러 문자열에 효율적으로 적용하거나 복잡한 정규식 작업에 사용할 수 있는 컴파일된 패턴이 생성됩니다.
요약하자면, 원시 문자열을 사용해야 한다는 점을 기억하세요. 또는 Python의 re 모듈에서 단어 경계 표현을 적절하게 처리하기 위한 re.compile() 함수.
위 내용은 내 Python Regex \b 단어 경계가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!