首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >模式/匹配Java,非零组计数但检索错误?

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

Stack Overflow用户
提问于 2014-01-07 21:36:52
回答 2查看 3.3K关注 0票数 6

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

以下是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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());

控制台:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)

行号指向

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
System.out.println("matcher1.group(0) = " (matcher1.group(0)).toString());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-07 21:42:29

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  if (matcher1.find()) {
    System.out.println("matcher1.group(0) = " (matcher1.group(0)).toString());
  } else {
    System.out.println("No match.");
  }

另外,.是regex中的一个特殊字符,您可能需要\\.

票数 9
EN

Stack Overflow用户

发布于 2014-03-06 12:08:45

如果我正确理解,您需要访问创建IP地址的四个字节。您可以尝试使用与IP地址匹配的regex,然后拆分找到的字符串,而不是使用组。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
String GeoIPs = "192.168.1.21, 10.16.254.1, 233.255.255.255";
Pattern pattern = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");
Matcher matcher;

matcher = pattern.matcher(GeoIPs);

while (matcher.find()) {
    String match = matcher.group();
    String[] ipParts = match.split("\\.");
    for (String part : ipParts) {
        System.out.print(part + "\t");
    }
    System.out.println();
}

对于用于IP提取的Java,有一些答案:Extract ip addresses from Strings using regexregex ip address from string

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20987784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文