[英]Why does my regular expression in Python not capture integers?
我正在使用正則表達式查找未用0x
的數字序列。
例如。
0
50505
20201
0012
我的正則表達式是(?:[^(0x)]\\d+)
,該表達式(在我的腦海中)轉換為匹配不是以0x
任何數字序列。 但這不起作用-我錯誤地做出了什么假設?
正則表達式中的[^(0x)]
匹配非(
, 0
, x
, )
任何字符。
在后面使用負數:
>>> re.findall(r'(?<!0x)\d+\b', '0 0x111 50505 20201 0012')
['0', '11', '50505', '20201', '0012']
來自http://docs.python.org/2/library/re.html
(?<!...)
如果字符串中的當前位置之前沒有...的匹配項,則匹配。這稱為否定性后向斷言。 類似於肯定的后置斷言,所包含的模式必須僅匹配某個固定長度的字符串。 以否定的后向斷言開頭的模式可以在要搜索的字符串的開頭匹配。
UPDATE
使用以下正則表達式:
>>> re.findall(r'\b\d+\b', '0 0x111 50505 20201 0012')
['0', '50505', '20201', '0012']
對於任何不以[0或x]開頭的內容,它看起來像是一個非捕獲組。
您是否嘗試過負面觀察?
(r'(?<!0x)\d+')
(花了我很長時間在電話上鍵入此消息,現在我看到有人已經對其進行了排序。經驗教訓:電話上沒有正則表達式。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.