我的正则表达式从同一代码中有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中的第一个,同时仍然允许模式的其余部分匹配。将.*替换为[^0-9]*

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

10-11 22:22