使用Regexp Java Stringparsing

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

String: "TestStringpart1 with second test part2"
Result should be: String[] {"part1", "part2"}
Regexp: "TestString(.*?) with second test (.*?)"

我的测试代码是:

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

Pattern pattern = Pattern.compile(regexp);
Matcher matcher = pattern.matcher(res);
int i = 0;
while(matcher.find()) {
    i++;
    System.out.println(matcher.group(i));
}

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

谢谢


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

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

并更改println代码..

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

那么,你只会问它......在你的原始代码中,查找不断将匹配器从整个正则表达式的一个匹配转移到下一个匹配器,而在这个时间段内,你只能拉出一个组。 实际上,如果你的字符串中有多个匹配的正则表达式,你会发现对于第一次出现,你会得到“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));
}
链接地址: http://www.djcxy.com/p/76989.html

上一篇: Java Stringparsing with Regexp

下一篇: Lazy quantifier and lookahead