【发布时间】:2019-11-25 09:50:22
【问题描述】:
我有以下问题:
var a = ' 15159970 (30.12.2015), 15615115 (01.01.1970), 11224455, 55441123
我想要一个正则表达式来仅提取数字:15159970、15615115、11224455、55441123
到目前为止有什么:
re.findall(r'(\d+\s)\(', a)
仅提取前 2 个数字:15159970、15615115
还有第二个 var b = 15159970, 15615115, 11224455, 55441126 我想比较这两个变量,如果它们不同,则打印(“变量不同!”)
谢谢!
【问题讨论】:
-
问题是你表达式中的左括号。该模式只出现两次。
-
您可以使用以下正则表达式查找前面没有
.或(正则表达式的数字:(?<![(.])\b(\d+)\b -
我使用的是
(\d+)(?:\s+|,|\n|$),它只匹配模式,后跟:换行符、空格、逗号或行尾。但我认为@ChrisDoyle 的建议更好。 -
不,Regex to match text, but not if contained in brackets 没有回答这个问题,标准不仅仅是跳过括号中的所有内容。即使这是唯一的标准,链接线程中的答案实际上并不适用于所有情况,我下面的解决方案可以。
标签: python regex python-3.x