re
모듈의 모든 기능을 사용하면 패턴 문자열 대신 패턴 개체를 지정할 수 있습니다. 이미 패턴이있는 경우 새 패턴 객체를 만드는 것을 피할 수있는 단순화/최적화 기능입니다.
내가 명시 적으로이 문제를 언급 문서 도구 링크를 찾을 수 없습니다,하지만 당신은 소스 코드
1 볼 경우 당신은 아주 쉽게 볼 수 있습니다. 시작하려면
re.compile
에 대한
implementation입니다 :이 기능은
_compile
라는 이름의 또 다른 함수를 호출하지만 아무것도하지 않는 방법
def compile(pattern, flags=0):
"Compile a regular expression pattern, returning a pattern object."
return _compile(pattern, flags)
알 수 있습니다. 이 함수는 실제로 패턴 객체를 만듭니다. re.compile
은 별칭 일뿐입니다.
에 이동, re.search
에 대한 implementation은 다음과 같습니다 당신이 볼 수 있듯이, re.search
기능에 대한 특별한 것은 또한
def search(pattern, string, flags=0):
"""Scan through string looking for a match to the pattern, returning
a match object, or None if no match was found."""
return _compile(pattern, flags).search(string)
없다. re._compile
에 의해 반환 된 패턴 객체의 search
메소드를 호출합니다.
re.search(p, 'Paris in the the spring').group()
를 동일하다 :이 일을하는 것을 의미한다 re._compile
당신이 패턴 문자열로 패턴 개체를 전달할 수 있습니다 이유
re._compile(p).search('Paris in the the spring').group()
그래서 당신이 요청해야하는 문제입니다. 이전과 같이, 대답은
implementation 보면 찾을 수 있습니다 당신이 볼 수 있듯이
def _compile(pattern, flags):
...
if isinstance(pattern, _pattern_type):
if flags:
raise ValueError(
"Cannot process flags argument with a compiled pattern")
return pattern
는 _compile
함수는 pattern
인수가 이미 패턴 객체입니다 있는지 확인하기 위해 검사를 수행합니다. 그렇다면, 단순히 그것을 반환하고 새로운 것을 구축하는 것을 피합니다. 해진다
re._compile(p).search('Paris in the the spring').group()
:
re.search(p, 'Paris in the the spring').group()
을 동등하다 :이 수행하는 것을 의미
p.search('Paris in the the spring').group()
1이 CPython의 소스 코드이다.
'아아'란 무엇입니까? –
'define : alas'에 대한 웹 검색에서는 슬픔, 동정 또는 염려의 표현입니다. 나는 ** 후회 **의 표현으로 그것을 실제로 사용하고 있었다. (아마 그 모듈을 잘못 설계하는 데 도움을 준 것에 대한 나의 책임감을 위해, 또는 잘못된 설계 돛을 내버려두기 - 너무 늦어서 지금 그것을 바꿀 수는 없다.) - 그러나 나는 그것이 "슬픔, 동정 또는 염려"에 충분히 가깝기를 바란다. (영어가 나의 제 3의 언어이기 때문에 나는 그것을 올바르게 사용한다면 나는 결코 자신감을 가질 수 없다. 미국 태생의 아내와 나의 편집자는 모두 대부분의 원어민보다 더 잘 사용합니다. –
글쎄 영어가 내 것이 아니기 때문에 내가 물었습니다 :-) –