我想在字符串中找到所有负浮点数并将它们存储在数组中。我认为我的正则表达式是正确的,但我的方法有问题。
Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+$");
String[] results = pattern.split("|AAA--A A05_#A| |-999.999| |-55.7|");
答案 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
循环中添加列表或类似内容。我不知道任何返回所有匹配集合的方法,但你可以根据上面的代码轻松编写一个实用方法来自己做。
编辑:如评论中所述,如果仅想要找到负值,-
不应该是可选的(并且它不需要在一个集合中,要么 - 只要-?
就可以了。)