java 里的正则表达式和 c# 中的不一样。尤其是从中提取部分字符串的时候。比如说,给定一个字符串,
REF ( RMB 393.00000,OTHERS
要从中提取出数值,c# 只需要给数值匹配的正则表达式就可。一个参考:
[0-9]+(\.[0-9]+)?
然后取匹配到的内容即可。
对于 java, 需要设计一个匹配整个内容的正则表达式,然后从中取出数值的分组。参考如下:
[^0-9]*([0-9]+(\.[0-9]+)?).*
然后从中取出第 1 个 group。
String input = "REF ( RMB 393.00000,OTHERS";
Matcher matcher = pattern.matcher(input, Pattern.DOTALL);
if(matcher.matches()){ String num = matcher.group(1); }
创建 matcher 那一句,在最后加入 Pattern.DOTALL 表示就算内容中包含回车换行符也能正常匹配。