這是我的程式碼:
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+
它。