Java 错误? 2 个相同正则表达式的不同输出

标签 java regex

我的正则表达式有来自同一代码的 2 个不同的输出...但我不知道出了什么问题。这是一段代码,希望你能帮助我。谢谢!

String s = "48° 18′ 13,94″ nördliche Breite, "
         + "11° 34′ 31,98″ östliche Länge";

String kommazahl = "[0-9]{1,2}([\\.,][0-9]+)?";
String zahl = "[0-9]{1,2}";

Pattern p1 = Pattern.compile("("+ zahl +"[°/| ]{1,2}"+ zahl +"(['′/| ]{1,2}("+ kommazahl +")?)?).*"
                            +"("+ zahl +"[°/| ]{1,2}"+ zahl +"(['′/| ]{1,2}("+ kommazahl +")?)?).*");

Matcher m1 = p1.matcher(s);

System.out.println(m1.group(1) + "\n" + m1.group(5));

// Output should be:
// 48° 18′ 13,94
// 11° 34′ 31,98

// Output is:
// 48° 18′ 13,94
// 1° 34′ 31,98

最佳答案

.* 贪婪地匹配 11 个模式中的前 1 个,同时仍然允许模式的其余部分匹配。将 .* 替换为 [^0-9]*

关于Java 错误? 2 个相同正则表达式的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/955796/

相关文章:

java - JAXB 如何推进 XMLStreamReader?

c# - 正则表达式问题 |需要验证数字范围

.net - ToPascalCase() C# for all caps 缩写

javascript - 两个数值之间的正则表达式

java - 使用 String 的 ReplaceAll 方法删除所有标记,除非它们遵循特定短语

java - 需要打印调用时使用的函数的实际参数名称

java - Thrift 包含两个同名文件?

java - 如何在 Spring Boot 中忽略可选的 xsd 属性和列表标记

java - jenkins在suse安装失败,需要java>=1.6

java - 使用java正则表达式从字符串中删除括号