단어 경계(b) 정규 표현식 지원
Python에서는 정규 표현식을 활용하여 문자열 내의 패턴을 찾고 일치시킬 수 있습니다. 정규식을 탐색하는 동안 단어 경계를 일치시키기 위해 b 표현식을 활용하라는 제안을 발견했을 수 있습니다. 그러나 이 접근 방식으로 인해 예상치 못한 결과가 발생할 수 있는 경우가 있습니다.
문제
다음 Python 코드 조각을 고려하세요.
x = 'one two three' y = re.search("\btwo\b", x)
예상으로는, 이 코드는 문자열 내에서 일치 항목이 발견되면 일치 개체를 반환해야 합니다. 그러나 놀랍게도 None을 반환합니다. 이는 질문을 제기합니다: Python re 모듈은 단어 경계 일치를 위해 b 사용을 지원하지 않습니까?
해결책
주어진 스니펫의 문제는 일반 문자열 사용. 정규식이 올바르게 작동하려면 원시 문자열을 활용하는 것이 중요합니다. 원시 문자열은 아래와 같이 문자열 앞에 'r'을 붙여 표시합니다.
x = 'one two three' y = re.search(r"\btwo\b", x)
문자열을 원시 문자열로 수정하면 문제가 해결되고 코드는 성공적으로 일치 개체를 반환합니다.
대체 접근 방식
단어 경계 일치에 대한 대안 접근 방식은 re.compile() 함수. 이 함수를 사용하면 여러 검색에 재사용할 수 있는 정규식 개체를 정의할 수 있어 잠재적으로 효율성이 향상됩니다.
word = 'two' k = re.compile(r'\b%s\b' % word, re.I) x = 'one two three' y = k.search(x)
이 경우 변수 k는 컴파일된 정규식 개체를 나타내고 y에는 일치 항목이 포함됩니다. 물체. re.compile()을 사용하면 유연성과 성능 이점이 제공되므로 복잡한 정규식 시나리오에 적합한 선택이 됩니다.
위 내용은 내 Python `re.search()`가 `\b`를 사용하여 단어 경계를 찾지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!