【问题标题】:Java Stringparsing with Regexp使用正则表达式解析 Java 字符串
【发布时间】:2010-11-22 00:48:27
【问题描述】:

我尝试使用正则表达式解析字符串以从中获取参数。 举个例子:

字符串:“TestStringpart1 和第二个测试 part2” 结果应该是:String[] {"part1", "part2"} 正则表达式:“TestString(.*?) 和第二个测试 (.*?)”

我的测试代码是:

String regexp = "TestString(.*?) with second test (.*?)"; String res = "TestStringpart1 和第二个测试 part2"; 模式模式 = Pattern.compile(regexp); 匹配器 matcher = pattern.matcher(res); 诠释 i = 0; 而(matcher.find()){ 我++; System.out.println(matcher.group(i)); }

但它只输出“part1” 有人可以给我提示吗?

谢谢

【问题讨论】:

  • 您可以使用以下站点检查您的正则表达式是否与测试用例:regex101.com

标签: java regex


【解决方案1】:

好吧,你只需要它...只抽出一组。实际上,如果你的字符串中有多个正则表达式匹配,你会发现第一次出现,你会得到“part1”,第二次出现你会得到“part2”,而对于任何其他参考都会出错。

while(matcher.find()) {

    System.out.print("Part 1: ");
    System.out.println(matcher.group(1));

    System.out.print("Part 2: ");
    System.out.println(matcher.group(2));

    System.out.print("Entire match: ");
    System.out.println(matcher.group(0));
}

【讨论】:

    【解决方案2】:

    可能是一些修复正则表达式

    String regexp = "TestString(.*?) with second test (.*)";
    

    并更改 println 代码..

    if (matcher.find())
        for (int i = 1; i <= matcher.groupCount(); ++i)
            System.out.println(matcher.group(i));
    

    【讨论】:

      猜你喜欢
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2019-12-10
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多