1

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

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

1 回答 1

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显然,您可以在循环中添加到列表或类似内容。我不知道有什么方法可以返回所有匹配项的集合,但是您可以根据上面的代码轻松编写一个实用程序方法来自己执行此操作。

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

于 2012-07-08T19:59:23.803 回答