如何获得完全匹配忽略正则表达式中的非数字?
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+ 在哪里?我在我的代码中看到它
不不,我是说如果你想要4500
出45,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。以上是关于如何获得完全匹配忽略正则表达式中的非数字?的主要内容,如果未能解决你的问题,请参考以下文章