Java 正则表达式查找所有美元符号、括号和逗号
我需要一个正则表达式来删除所有美元符号、逗号、左括号和右括号的实例,以便将字符串解析为双精度 Exmaple是:Java 正则表达式查找所有美元符号、括号和逗号,java,regex,Java,Regex,我需要一个正则表达式来删除所有美元符号、逗号、左括号和右括号的实例,以便将字符串解析为双精度 Exmaple是: ($108.34) $39.60 1,388.80 守则: @Parsed @Replace(expression = "", replacement = "") public Double extdPrice; 正则表达式=[^0-9\\.] 这就是你要找的。它将匹配除数字0-9和字符 因此,从技术上讲,此正则表达式将删除所有额外字符,如
($108.34)
$39.60
1,388.80
守则:
@Parsed
@Replace(expression = "", replacement = "")
public Double extdPrice;
正则表达式=
[^0-9\\.]
这就是你要找的。它将匹配除数字0-9
和字符
因此,从技术上讲,此正则表达式将删除所有额外字符,如(
,
$
USD
等
示例:System.out.println(($123.89)“.replaceAll([^0-9\\.]”,“);
将给出一个输出123.89
测试输出:
- ($108.34)=>108.34
- $39.60=>39.60
- 1388.80=>1388.80
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
公开课范例{
公共静态void main(字符串[]args){
最后一个字符串regex=“[(),$]”;
final String=“($108.34)\n”
+“$39.60\n”
+ "1,388.80";
最终字符串subst=“”;
最终模式=Pattern.compile(regex);
final Matcher Matcher=pattern.Matcher(字符串);
//被替换的值将包含在结果变量中
最终字符串结果=matcher.replaceAll(subst);
System.out.println(“替换结果:+结果”);
}
}
\d{1,3}(\,\d\d\d)*(\。\d+)?
可以像您的示例一样匹配所有数字,但不能匹配123456(无逗号)。
结果是
108.34
39.60
1,388.80
你需要替换逗号,除数字、小数点和符号外,删除所有内容更为重要。但在计算括号中的数字时,括号中的数字是负数,你需要知道在转换时,这显然是金钱。你应该使用
BigDecimal
,而不是Double
@user207421 p问题是@Replace
注释不可重复,并且该值将插入MongoDB,因此必须使用Double
。然后表定义也错误。它应该是十进制(10,2)
大概吧。不要低估这个错误的严重性。出于我所说的原因,我怀疑你能用一个正则表达式来完成它。