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

Posted

技术标签:

【中文标题】如何获得完全匹配忽略正则表达式中的非数字?【英文标题】:How to get full match ignoring non-digits in regex? 【发布时间】:2019-04-24 10:44:17 【问题描述】:

我试图从忽略所有非数字(如逗号、符号等)的字符串中获取数字。我有一个这样的正则表达式:

(?:[\d]+)

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

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

但我想要完整的单匹配为 4500。我该怎么做?

【问题讨论】:

\D+ 替换为空字符串,这将只留下数字字符串。但是如果你有十进制数字,那么你需要稍微改变一下策略。 \D+ 在哪里?我在我的代码中看到它 不不,我是说如果你想要450045,00%,那么实现它的一种方法是,用空字符串替换所有由\D 表示的非数字。 如何使用正则表达式替换?我没有在这里使用 python 代码。我只想抓到号码 请为每条记录包括将出现在列中的完整值。 【参考方案1】:

我们可以先尝试使用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']

【讨论】:

我没有为此使用 python。 那你到底为什么要使用 Python 进行标记?而且,如果您不使用 Python,那么您使用的是什么? 我正在使用 plsql。

以上是关于如何获得完全匹配忽略正则表达式中的非数字?的主要内容,如果未能解决你的问题,请参考以下文章

在js中正则表达式如何判断用户输入的内容只能是数字和字母

在js中正则表达式如何判断用户输入的内容只能是数字和字母

如何用正则表达式判断一个字符串中有数字

如何忽略正则表达式主题字符串中的空格?

Nginx中的正则如何匹配数字

正则表达式和re模块