我想知道如何在给定的也具有非数字符号的数据集中获得正负数字的完全匹配。我有一堆货币交易,我只想计算数字值。
使用以下正则表达式,我可以正确获取所有数字,但是找不到找到“-”符号的方法。
知道为什么吗?
(\d+)(,(\d{3}))*((?=[,.-](\|$))|(\.\d+))
数据集:
null
null
($7.08 CAD)
(-$1.06 CAD)
(€50.03 EUR)
($1,024.38 CAD)
(-$1,024,309.06 CAD)
(€50.03 EUR)
期望的输出:
7.08
-1.06
50.03
1,024.38
-1,024,309.06
50.03
一个选项是对可选的-
和数字部分使用2个捕获组,并在[$€]?
之间匹配可选的欧元或美元符号
然后,您可以将第一个和第二个捕获组连接在一起。
(-?)[$€]?(\d+(?:[,.]\d+)*)
说明
(-?)
捕获组1,匹配可选的-
[$€]?
可选地匹配列出的字符之一(
捕获第2组\d+
匹配1个以上的数字(?:[,.]\d+)*
重复0+次,对,
或.
进行数学运算后跟1+数字)
封闭组