java - 将两个模式合并为一个

标签 java regex

我需要编写一个模式来删除货币符号和逗号。例如Fr.-145,000.01 之后模式匹配器应返回 -145000.01

我正在使用的模式:

^[^0-9\\-]*([0-9\\-\\.\\,]*?)[^0-9\\-]*$

这将返回-145,000.01

然后我删除逗号得到-145000.01,我想问是否有可能我改变模式并直接得到-145000.01

String pattern = "^[^0-9\\-]*([0-9\\-\\.\\,]*?)[^0-9\\-]*$";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(str);
if(m.matches()) {
 System.out.println(m.group(1));
}

我希望输出可以解析逗号

最佳答案

您可以使用 String.replaceAll() 和更简单的正则表达式来简化它(前提是您期望输入相当合理,即数字中没有嵌入多个小数点或多个负号)

   String str = "Fr.-145,000.01";
   str.replaceAll("[^\\d-.]\\.?", "")

如果您要走这条路线,我会通过使用 BigDecimalDouble 解析输出来对其进行健全性检查。

关于java - 将两个模式合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56670551/

相关文章:

java - 二叉树和 botkey troube - 无法遍历树

java - Spring缓存不适用于子类中的重写方法

java - 用于拆分电话号码的正则表达式

c# - 使用正则表达式按逻辑拆分字符串

java - 查找字符串是否包含 ""

JavaFX - 获取 GridPane 以适应父级

java - if 语句中的compareAndSet。它是原子操作吗?

javascript - 部分正则表达式匹配

python - python中多次出现的正则表达式

python - python pandas中提取子字符串的正则表达式