繁体   English   中英

如何用正则表达式剥离字符串

[英]How to strip a string with a regular expression

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

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

编辑:正如在评论中指出,如果你只是想找到负值时, -不应该是可选的(它并不需要在一组,或者-只是-?本来罚款)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM