如何获得完全匹配而忽略正则表达式中的非数字?

时间:2019-04-24 10:44:17

标签: regex plsql

我试图从字符串中获取数字,而忽略所有非数字,例如逗号,符号等。我有这样的正则表达式:

(?:[\d]+)

对于“ 45,00%”,结果如下:

Match 1
Full match  0-2 45
Match 2
Full match  3-5 00

但是我希望完整匹配为4500。我该怎么做?

1 个答案:

答案 0 :(得分:0)

我们可以先尝试使用re.findall查找所有匹配的百分比字符串,然后对结果列表使用re.sub除去小数点字符:

input = "Here is one value 45,00% and 12% is another"
matches = re.findall(r'\d+(?:,\d+)?%', input)
matches = [re.sub(r'[,%]', '', i) for i in matches]
print(matches)

['4500', '12']