re 모듈의 정규식이 단어 경계 (\ b)를 지원하고?
정규식에 대해 조금 더 배우려고하는 동안 튜토리얼에서 \b
를 사용하여 단어 경계를 일치 시키는 수 많은 제안했습니다 . 그러나 파이썬 인터프리터의 다음 스 니펫은 예상대로 작동하지 않습니다.
>>> x = 'one two three'
>>> y = re.search("\btwo\b", x)
일치하는 항목이 있으면 일치 개체에 맞춰서 None
.
는 IS \b
표현은 언어에서 지원되지 않거나 내가 잘못을 사용하고 있습니까?
시도해 보지 그래
word = 'two'
re.compile(r'\b%s\b' % word, re.I)
다수 :
>>> word = 'two'
>>> k = re.compile(r'\b%s\b' % word, re.I)
>>> x = 'one two three'
>>> y = k.search( x)
>>> y
<_sre.SRE_Match object at 0x100418850>
또한 언급 된 것을 잊었습니다. 코드에서 원시를 기억합니다.
>>> x = 'one two three'
>>> y = re.search(r"\btwo\b", x)
>>> y
<_sre.SRE_Match object at 0x100418a58>
>>>
작동합니다. re.search(r"\btwo\b", x)
"\b"
Python으로 전화 번호 단일 문자 "\x08"
입니다 .. 다음과 같이 백 슬래시를 이스케이프.
"\\b"
또는 다음과 같이 원시를 작성하십시오.
r"\b"
작동하지 않는 이유 를 명시 적으로 설명 re.search("\btwo\b", x)
하기 \b
위해 Python에서 백 스페이스 문자의 속기 이기 때문 입니다.
print("foo\bbar")
fobar
패턴 따라서 "\btwo\b"
은 백 스페이스를 찾고 two
, 뒤에, 다른 백 스페이스가 뒤 따릅니다 x = 'one two three'
. ( ) 에서 검색하는 것은 없습니다.
시퀀스 를 단어 경계로 해석 하도록 re.search
(또는 compile
) 허용하려면 \b
백 슬래시 ( "\\btwo\\b"
)를 이스케이프 하거나 원시 문자열을 사용하여 패턴을 만듭니다 ( r"\btwo\b"
).
Python 문서
https://docs.python.org/2/library/re.html#regular-expression-syntax
\ 비
빈 문자열과 일치하지만 단어의 시작 또는 끝에서만 일치합니다. 단어는 일련의 영숫자 또는 밑줄 문자로 정의되므로 단어의 끝은 공백 또는 영숫자가 아닌 밑줄이 아닌 문자로 표시됩니다. 공식적으로 \ b는 \ w와 \ W 문자 사이 (또는 그 반대) 또는 \ w와 문자열의 시작 / 끝 사이의 경계로 정의되므로 영숫자로 간주되는 정확한 문자 집합은 UNICODE 및 LOCALE 플래그의 값. 예를 들어, r '\ bfoo \ b'는 'foo', 'foo.', '(foo)', 'bar foo baz'와 일치하지만 'foobar'또는 'foo3'과는 일치하지 않습니다. 문자 범위 내에서 \ b는 Python의 문자열 리터럴과의 호환성을 위해 백 스페이스 문자를 나타냅니다.
'IT' 카테고리의 다른 글
전체 데이터베이스 SQL-Server 스크립팅 (0) | 2020.09.07 |
---|---|
Homebrew : 최고 공식 만평 (0) | 2020.09.07 |
sed 또는 awk : 패턴에 따라 n 줄 삭제 (0) | 2020.09.07 |
jQuery 플러그인 구문을 이해하고 싶습니다. (0) | 2020.09.07 |
Jekyll 날짜 형식은 어떻게 작동 작동합니까? (0) | 2020.09.07 |