[英]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.