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

标签 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());

控制台:

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)

行号指向

System.out.println("matcher1.group(0) = " (matcher1.group(0)).toString());

最佳答案

groupCount 只是告诉您在正则表达式中定义了多少组。如果你想真正访问一个结果,你必须先进行匹配!

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

还有 . 是正则表达式中的特殊字符,您可能想要 \\.?

关于java - 模式/匹配器 Java,非零组计数但错误检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987784/

相关文章:

java - 从正则表达式中提取子字符串

JavaFX:一次有 2 个独立的窗口

java - AmazonS3ClientBuilder.defaultClient() 无法说明区域?

regex - 将匹配的值传递给函数,并替换为返回值

java - 将 C# 正则表达式转换为 Java 匹配器问题

java - 在java中,当使用正则表达式查找模式时,如何获得嵌套结果?

java - 检查替换字符串是否有效

java - 如何验证成员(member)是否是管理员?

python - 在 Python 中匹配 "Chinese+Number"模式的正则表达式

python - python : try to detect `column` datatype(digits) 中的正则表达式问题