為什麼我的正規表示式程式碼沒有回傳任何結果?

為什麼我的正規表示式程式碼沒有回傳任何結果?

這是我的程式碼:

import re
word="ABCD 12345"
match=re.search(r"\d*",word)
print(match.group())

對於這段程式碼,我沒有得到任何輸出(也沒有錯誤)。

請幫忙。這裡有什麼問題呢?

答案1

特殊字元*的意思是「匹配零個或多個」。換句話說,\d*允許是零長度匹配 - 並且因為它是正則表達式中唯一的東西,所以整個匹配允許為零長度。

確實是*貪婪的,並且會返回所有數字如果它實際上到達了“12345”所在的位置 - 例如re.match(r"\d*", "12345")會返回整個數字:

>>> re.search(r"\d*", "12345")
<重新匹配物件;跨度=(0, 5), 匹配='12345'>

但在你的情況下,它實際上並沒有到達字串中的那個位置,而是立即決定在位置 0、長度 0 處存在匹配。

>>> re.search(r"\d*", "ABCD 12345")
<重新匹配物件;跨度=(0, 0), 匹配=''>

您可能想使用\d+它。

相關內容