模式/匹配器Java,非零组计数但错误检索?

Fai*_*ian 6 java regex matcher

matcher.groupCount()给了我4但是当我使用时matcher.group(0),...... matcher.group(0),它给了我一个错误.

以下是我的代码:

Pattern pattern = Pattern.compile("([0-9]+).([0-9]+).([0-9]+).([0-9]+)");
Matcher matcher1, matcher2;

GeoIP[0][0] = (GeoIP[0][0]).trim();
GeoIP[0][1] = (GeoIP[0][1]).trim();

System.out.println(GeoIP[0][0]);
System.out.println(GeoIP[0][1]);

matcher1 = pattern.matcher(GeoIP[0][0]);
matcher2 = pattern.matcher(GeoIP[0][1]);

System.out.println("matcher1.groupCount() = " + matcher1.groupCount());
System.out.println("matcher2.groupCount() = " + matcher2.groupCount());

System.out.println("matcher1.group(0) = " (matcher1.group(0)).toString());
Run Code Online (Sandbox Code Playgroud)

安慰:

Exception in thread "main" 1.0.0.0
1.0.0.255
matcher1.groupCount() = 4
matcher2.groupCount() = 4

java.lang.IllegalStateException: No match found
    at java.util.regex.Matcher.group(Unknown Source)
    at filename.main(filename.java:linenumber)
Run Code Online (Sandbox Code Playgroud)

行号指向

System.out.println("matcher1.group(0) = " (matcher1.group(0)).toString());
Run Code Online (Sandbox Code Playgroud)

Aff*_*ffe 9

groupCount只是告诉你在正则表达式中定义了多少个组.如果您想要实际访问结果,则必须先执行匹配!

  if (matcher1.find()) {
    System.out.println("matcher1.group(0) = " (matcher1.group(0)).toString());
  } else {
    System.out.println("No match.");
  }
Run Code Online (Sandbox Code Playgroud)

也是.正则表达式中的特殊角色,你可能想要\\.