Regex의 중복 일치 이해
기본적으로 Python re 모듈의 findall() 메서드는 문자열 내에서 중복 일치를 캡처하지 않습니다. . 특히 일치 항목이 연속 문자로 구성된 경우 이 동작은 혼란스러울 수 있습니다.
다음 코드를 고려하세요.
match = re.findall(r'\w\w', 'hello') print(match)
출력:
['he', 'll']
이 패턴은 두 개의 연속 문자와 일치합니다. 단어 문자(w). 예상대로 그와 ll이 반환됩니다. 그러나 el과 lo는 문자열에 표시됨에도 불구하고 캡처되지 않습니다.
겹치는 일치 극복
겹치는 일치를 캡처하려면 예측 어설션(?= ...). 이 어설션은 특정 패턴과 일치하지만 문자열의 문자를 사용하지 않습니다. 대신 다음 문자가 어설션과 일치하는지 확인합니다.
예:
match1 = re.findall(r'(?=(\w\w))', 'hello') print(match1)
출력:
['he', 'el', 'll', 'lo']
이 경우 (?=(ww ))은 두 개의 연속된 단어 문자가 실제로 소비되지 않고 존재하는 모든 위치와 일치합니다. 이를 통해 findall()은 겹치는 일치 항목과 겹치지 않는 일치 항목을 모두 반환할 수 있습니다.
설명
정규식 /(?=(ww))는 다음과 같이 나눌 수 있습니다. :
이 접근 방식을 사용하면 연속된 문자로 구성된 경우에도 문자열 내에서 중복되는 모든 일치 항목을 효과적으로 검색할 수 있습니다.
위 내용은 Python의 `re.findall()`을 사용하여 겹치는 일치 항목을 어떻게 찾을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!