regex C#中的正则表达式只获取金钱或带点和逗号的小数

t1rydlwq  于 2023-06-25  发布在  C#
关注(0)|答案(3)|浏览(129)

你能帮我把这些数据拿出来吗:

1.529,11
(231,48)
21.945,51

从这个表达式:

Saldo em Tesouraria 1.529,11 100,00% 0,00%
Custo SELIC 17/04/23 (231,48)
Diferimento de despesa de TAXA CVM com vencimento 29/12/23 21.945,51

我正在使用这个正则表达式

(?:((\(|[0-9])+[\.|,]))+\d+([\s]|\))

但我无法获取所有数据
谢谢

ncecgwcz

ncecgwcz1#

试试这个:
(\d{1,3}\.)*\d{1,3},\d{2}(?!%)|\((\d{1,3}\.)*\d{1,3},\d{2}(?!%)\)
如果不需要括号,可以删除|之后的所有内容(包括|)。
点击这里:https://regex101.com/r/EdkwKr/1

8ehkhllq

8ehkhllq2#

作为参考,您可以使用以下模式。

(?<=^| )(?:\d{1,3}(?:\.\d{3})*(?:,\d{2})(?!%)|\(\d{1,3}(?:\.\d{3})*(?:,\d{2})\))(?= |$)

这将与以下内容匹配。其中,小数点逗号和2位数字为必填项。
而且,我想,技术上也应该有一个检查前导零的,我没有添加它可能是无关紧要的。

123.456.789,01
12.345.678,90
1.234.567,89
123,45
12,34
1,23

与这些不匹配,

123
123,4
1.2.3,4
1.23,45
100,00%
1,00%
1%
w80xi6nr

w80xi6nr3#

我这样做了。使用的正则表达式是:

(?:((\(|[0-9])+[\.|,]))+\d+([\s]|\)|\d)(?!%)

在C#中,我写的代码是这样的:

Regex valores = new Regex(@"(?:((\(|[0-9])+[\.|,]))+\d+([\s]|\)|\d)(?!%)");

相关问题