保留部分数字(S4,K2),所有字母和句号但删除所有其他数字(简单和那些有小数点)

时间:2015-07-31 10:48:16

标签: java regex string

我想保留部分数字,但要删除字符串中的完整数字。

public static void main(String[] args){
        String testString = "I walked 2 miles in 4 hour. I went to K2. I have 2000 Rupes only. This is 2.4.";
        testString = testString.replaceAll("[0.0-9.9]", "");
        System.out.println(testString);
}

这给了我以下结果 "我走了几英里,我去了K我只有Rupes这是"

但我想保留部分数字(如K2)。只想删除完整的数字(2,4等)。此外,我想保持句号,但想删除小数点数(2.4等)。

我想要这些结果。
"我在一小时内走了几英里。我去了K2。我只有Rupes。这是。"

什么应该是正确的正则表达式?
我会感激你的。

1 个答案:

答案 0 :(得分:1)

尝试:

(?<![a-zA-Z])\d+(\.\d+)?(?![a-zA-Z])

for Java:(?<![a-zA-Z])\\d+(\\.\\d+)?(?![a-zA-Z])

其中:

  • (?<![a-zA-Z]) - 负面的背后,搜索字母
  • \d+(\.\d+)? - 数字
  • (?![a-zA-Z]) - 否定前瞻,搜寻字母

否定lookarouds在替换子字符串之前检查efter数字之前是否没有字母

DEMO