문제:
re.findall을 사용하여 정규식 패턴과 일치시킬 때, 왜 겹치는 일치 항목을 모두 검색하지 않습니까? 예를 들어, 문자열 "hello"에서 정규식 r'ww'는 왜 "he" 및 "ll"에만 일치하고 "el" 및 "lo"에는 일치하지 않습니까?
답변:
기본적으로 re.findall은 중복되는 일치 항목을 생성하지 않습니다. 이를 달성하려면 강력한 정규식 기능인 예측 어설션을 사용하십시오.
해결책:
# Using a lookahead assertion matches = re.findall(r'(?=(\w\w))', 'hello') # Output: ['he', 'el', 'll', 'lo']
정규식의 (?=...) 구문은 다음과 같습니다. 미리보기 주장. 지정된 패턴이 현재 위치 바로 뒤에 나타나는 경우 일치하지만 문자열의 문자를 사용하지 않습니다. 이 경우 문자를 사용하지 않고 "hello"에서 두 문자 시퀀스("ww")를 모두 식별합니다.
설명:
위 내용은 `re.findall`이 중복되는 정규식 일치 항목을 반환하지 않는 이유는 무엇이며, Lookahead Assertions가 이 문제를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!