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