python - 正则表达式中*的疑问
PHPz
PHPz 2017-04-18 09:53:18
0
7
417
import re
text = 'thenextnothingis123456'
print(re.search(r'(\d*)', text).group(0))

为什么这段代码不能匹配出数字?如果将d替换成w反倒可以匹配出所有字符?

PHPz
PHPz

学习是最好的投资!

모든 응답(7)
小葫芦

r'(d*)'에서 *의 의미는 0 이상과 일치한다는 의미이므로 어떤 문자와도 일치할 수 없습니다. re.search를 사용하여 문자열의 처음부터 일치를 시작합니다. 'thenextnothingis123456'의 첫 번째 문자는 숫자가 아니므로 일치할 수 없지만 r'(d*)'는 어떤 문자와도 일치할 수 없으므로 빈 문자열입니다. 반환됩니다.

그리고 r'(d+)'는 1과 여러 숫자를 일치시켜야 합니다. 'thenextnothingis123456'을 일치시키는 데 사용하면 첫 번째 문자가 문자가 아니며 문자 1이 시작될 때까지 두 번째 문자를 계속 시도합니다. . 번호이므로 "123456"이 일치합니다. 아래 출력을 보면 알 수 있습니다.

으아아아
刘奇

왜 이 코드는 숫자와 일치하지 않나요?

실제로는 0번 일치된 것 같습니다. 귀하의 .group(0)이 일치가 성공했음을 나타내는 Nonetype 오류를 보고하지 않았습니다.

迷茫

정규식 입문 튜토리얼 30분

阿神

으아악

11111111 re.search가 #######2222222를 사용하기 때문에 이 문장의 결과는 비어 있습니다
黄舟

d를 시도하면 *는 0회 이상을 의미합니다.

刘奇

Peter_Zhu

으아악

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿