java - 根据出现次数获取子字符串,正则表达式java

标签 java regex string

大家好!我想知道是否有人可以帮助我。

我有一个字符串-2.100 CM 1.000 CM 1.025 CM

问题是在 CM 之前获取值,例如-2.11.01.025

Pattern pattern = Pattern.compile("(\\-*\\d*.\\d*) CM"); would give me -2.1, 

Pattern pattern = Pattern.compile(" (\\-*\\d*.\\d*) CM"); 1.0

无法获取第三个值(有没有办法根据值的出现次数获取值?

最佳答案

您可以拆分字符串。

String str = "-2.100 CM 1.000 CM 1.025 CM";

String[] array = str.split("\\s+CM\\s*");
for (String s : array) {
    System.out.println(new Double(s));
}

输出:

-2.1
1.0
1.025
<小时/>

您可以尝试使用模式以及使用正向前瞻

String str = "-2.100 CM 1.000 CM 1.025 CM";

Pattern p = Pattern.compile("[+-]?\\d+\\.?\\d*(?= CM)", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
while (m.find()) {
    System.out.println(new Double(m.group()));
}

输出:

-2.1
1.0
1.025

关于java - 根据出现次数获取子字符串,正则表达式java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179462/

相关文章:

Python正则表达式匹配多次

c - 使用可选参数格式 C/C++ 读取字符串

java - 如何使用字节缓冲区表示一个字节数组中的数据?

java - Citrus Framework-SUT与其他服务进行通信时出现问题

regex - 在 Google 文档中对 IMPORTRANGE 使用 REGEXEXTRACT

.net - 向我的 .NET RegEx 添加单个字符会导致其挂起

java - user.dir 在 Intellij IDEA 中没有正确解析

java - 有没有办法只在 Tomcat/Wildfly/Glassfish 启动时运行方法/类?

C 函数未生成预期的字符串

c# - String.format 慢,需要更快的替代品