替换部分正则表达式

时间:2014-09-12 12:19:42

标签: java string replaceall

我试图取代'。'两个不是数字符号之间。我使用了replaceAll和regEx

string.replaceAll("\\D\\.\\D", "_");

但它正在改变和附近的符号。'我可以用Java方法解决这个问题,还是应该编写自己的方法?

3 个答案:

答案 0 :(得分:1)

这可能适合你:

yourString.replaceAll("(\\D)[.](\\D)","$1$2");

答案 1 :(得分:0)

使用这样的正则表达式: (?<=\D)(\.)(?=\D)

demo here

您的问题是:\ D部分也将被选中。

示例:

System.out.println("1.1".replaceAll("(?<=\\D)(\\.)(?=\\D)", "")); // output : 1.1
System.out.println("a.b".replaceAll("(?<=\\D)(\\.)(?=\\D)", "")); // output : ab

答案 2 :(得分:0)

目前,在模式AB.CD之外,这将返回A.D,已匹配并替换了.B和{C两侧的仅1个字符。 {1}})

这就是我认为你正在努力的目标:

string.replaceAll("[^0-9]+\\.[^0-9]+", ".");

但我从你的描述中不清楚你想要实现的目标。