如何使用正则表达式去除字符串

时间:2012-07-08 19:54:16

标签: java regex

我想在字符串中找到所有负浮点数并将它们存储在数组中。我认为我的正则表达式是正确的,但我的方法有问题。

Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+$");      
String[] results = pattern.split("|AAA--A A05_#A| |-999.999| |-55.7|");

1 个答案:

答案 0 :(得分:6)

你的正则表达式将匹配锚定到字符串的末尾,这不是你想要的。

同样,Pattern.split没有做你想要的。这里有一些示例代码可以帮助您:

Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+");
String text = "|AAA--A A05_#A| |-999.999| |-55.7|";
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
    System.out.println(matcher.group());
}

打印:

-999.999
-55.7

显然,您可以在while循环中添加列表或类似内容。我不知道任何返回所有匹配集合的方法,但你可以根据上面的代码轻松编写一个实用方法来自己做。

编辑:如评论中所述,如果想要找到负值,-不应该是可选的(并且它不需要在一个集合中,要么 - 只要-?就可以了。)