>백엔드 개발 >파이썬 튜토리얼 >`re.findall()`은 정규 표현식에서 중복되는 일치 항목을 어떻게 처리합니까?

`re.findall()`은 정규 표현식에서 중복되는 일치 항목을 어떻게 처리합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-11 14:06:12318검색

How Does `re.findall()` Handle Overlapping Matches in Regular Expressions?

정규식 중복 일치 이해

re.findall()을 사용하여 정규 표현식과 일치시킬 때 중복 일치가 처리되는 방식을 이해하는 것이 중요합니다. 기본적으로 re.findall()은 겹치지 않는 일치 항목을 반환합니다.

사례 연구: hello 및 ww

다음 패턴을 고려하세요.

>>> match = re.findall(r'\w\w', 'hello')
>>> print match
['he', 'll']

예상대로 이 패턴은 두 문자 시퀀스와 일치합니다. 그러나 'el' 또는 'lo'는 각각 'he' 및 'll'과 겹치므로 일치하지 않습니다.

Lookahead Assertions과 겹치는 일치

겹치는 일치 항목을 찾으려면 미리보기 어설션을 사용할 수 있습니다. (?=...)로 표시되는 예측 어설션은 입력 문자열을 사용하지 않고 지정된 패턴이 다음에 존재하는지 확인합니다.

이 개념을 사용하여 다음 표현식은 겹치는 일치 항목과 겹치지 않는 일치 항목을 모두 성공적으로 캡처합니다.

>>> re.findall(r'(?=(\w\w))', 'hello')
['he', 'el', 'll', 'lo']

이제 패턴은 "두 글자 단어가 이어지는 위치를 찾으세요."로 표시됩니다. 이렇게 하면 겹치는 시퀀스와 겹치지 않는 시퀀스를 모두 포함하여 가능한 모든 일치 시퀀스가 ​​캡처됩니다.

위 내용은 `re.findall()`은 정규 표현식에서 중복되는 일치 항목을 어떻게 처리합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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