re.findall() 함수는 다음과 같은 경우 예상 결과를 반환하지 않으면 혼란스러울 수 있습니다. 문자열과 일치합니다. 특정 사례에서 해당 동작의 이유를 살펴보겠습니다.
다음 소스 문자열을 고려하세요.
s = r'abc123d, hello 3.1415926, this is my book'
그리고 다음 패턴:
pattern = r'-?[0-9]+(\.[0-9]*)?|-?\.[0-9]+'
re.search를 사용하면 올바른 결과를 얻습니다. 결과:
m = re.search(pattern, s) print(m) # <_sre.SRE_Match object; span=(3, 6), match='123'>
그러나 re.findall은 빈 목록을 반환합니다.
L = re.findall(pattern, s) print(L) # []
두 가지가 있습니다. 주요 측면 고려:
숫자 값을 올바르게 일치시키려면 대신 다음 패턴을 사용하십시오.
pattern = r'-?\d*\.?\d+'
이 패턴은 다음과 일치합니다:
이 수정된 패턴을 사용하면 re.findall이 예상 목록을 반환합니다.
['123', '3.1415926']
위 내용은 `re.search()`가 일치하는 항목을 찾을 때 `re.findall()`이 빈 목록을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!