>백엔드 개발 >파이썬 튜토리얼 >내 Python Regex \b 단어 경계가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 Python Regex \b 단어 경계가 실패하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-19 10:13:14348검색

Why Does My Python Regex b Word Boundary Fail, and How Can I Fix It?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.