簡體   English   中英

忽略 python 正則表達式匹配中的特定字符

[英]Ignore specific caracter in a python regex match

我一直在嘗試從這樣的字符串中提取一些值:'5 bucks' 並且也能夠得到 '5bucks' 但是當它單獨出現時忽略單詞 bucks 前面沒有任何數字。 我一直在嘗試使用這個正則表達式:

(\d*)(?:\s?)(?=bucks|dollars)

並在https://regex101.com/上進行測試。 它給了我兩個匹配而不是一個,使用相同的字符串。 這是為什么? 這就是我得到的:

第一場比賽:

全場比賽:5

第 1 組:5

比賽2:

全場比賽:

第一組:

在第二場比賽中,它似乎都是空的。 有沒有辦法阻止我的正則表達式找到這些 len 0 匹配項? 或者我可以用什么方法治療它?

你得到這些匹配是因為你匹配可選數字\d*和可選的空白字符\s? 正確的前瞻斷言是正確的美元或美元。

要獲得這兩種變體,您可以使用交替| 與非捕獲組。 為了防止單詞成為更大單詞的一部分,您可以添加單詞邊界\b

\b\d+ ?(?:bucks|dollars)\b

正則表達式演示

'(\d+)\s*(bucks|dollars)?'

然后選擇第一個匹配的項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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