簡體   English   中英

為什么我的Python正則表達式無法捕獲整數?

[英]Why does my regular expression in Python not capture integers?

我正在使用正則表達式查找未用0x的數字序列。

例如。

0
50505
20201
0012

我的正則表達式是(?:[^(0x)]\\d+) ,該表達式(在我的腦海中)轉換為匹配不是以0x任何數字序列。 但這不起作用-我錯誤地做出了什么假設?

正則表達式中的[^(0x)]匹配非(0x)任何字符。

在后面使用負數:

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM