我想查找字符串中的所有負浮點數並將它們存儲在數組中。我認爲我的正則表達式是正確的,但是我的方法有些問題。如何使用正則表達式去除字符串
Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+$");
String[] results = pattern.split("|AAA--A A05_#A| |-999.999| |-55.7|");
我想查找字符串中的所有負浮點數並將它們存儲在數組中。我認爲我的正則表達式是正確的,但是我的方法有些問題。如何使用正則表達式去除字符串
Pattern pattern = Pattern.compile("[-]?[0-9]*[.][0-9]+$");
String[] results = pattern.split("|AAA--A A05_#A| |-999.999| |-55.7|");
您的正則表達式將匹配錨定到字符串的末尾,這不是您想要的。
同樣,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
循環中類似的東西。我不知道任何返回所有匹配集合的方法,但是您可以根據上面的代碼輕鬆編寫一個實用程序方法來執行此操作。
編輯:正如在評論中指出,如果你只想找到負值,則-
不宜選用(它並不需要在一組,或者 - 只是-?
會被罰款)。
不是答案,但請注意,它(正則表達式)不會與[科學記數法](http://en.wikipedia.org/wiki/Scientific_notation)相匹配,因爲您的浮點數(通常可接受並被識別爲浮點數數字) - 它可能是你想要的。 – amit 2012-07-08 20:01:09
http://gskinner.com/RegExr/是一個很好的網站,可以幫助您構建正則表達式 – Zeveso 2012-07-08 20:05:17