> 백엔드 개발 > 파이썬 튜토리얼 > 내 Python `re.search()`가 `\b`를 사용하여 단어 경계를 찾지 못하는 이유는 무엇입니까?

내 Python `re.search()`가 `\b`를 사용하여 단어 경계를 찾지 못하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-06 04:13:17
원래의
1005명이 탐색했습니다.

Why Doesn't My Python `re.search()` Find Word Boundaries Using `b`?

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿