내 코드는 다음과 같습니다.
import re
word="ABCD 12345"
match=re.search(r"\d*",word)
print(match.group())
이 코드에서는 출력이 없습니다(오류도 없음).
친절하게 도와주세요. 여기서 문제는 무엇입니까?
답변1
특수 *
문자는 "일치"를 의미합니다.0 이상". 즉, \d*
길이가 0인 일치가 허용됩니다. 정규식의 유일한 항목이기 때문에 전체 일치의 길이가 0이 될 수 있습니다.
*
욕심이 많고 모든 숫자를 반환한다는 것은 사실입니다.만약에실제로 "12345"가 있는 위치에 도달했습니다. 예를 들어 re.match(r"\d*", "12345")
전체 숫자를 반환했을 것입니다.
>>> re.search(r"\d*", "12345") <re.Match 객체; 범위=(0, 5), 일치='12345'>
그러나 귀하의 경우에는 실제로 문자열의 해당 위치에 도달하지 않고 대신 위치 0, 길이 0에 일치하는 항목이 있다고 즉시 결정합니다. 'span' 속성에 유의하세요.
>>> re.search(r"\d*", "ABCD 12345") <re.Match 객체;범위=(0, 0), 일치=''>
아마도 대신 사용하고 싶을 것입니다 \d+
.