Java RegEx:刚刚获得matcher组的一部分

时间:2010-11-10 09:18:59

标签: java regex

我在Java中有一个正则表达式:

Pattern pattern = Pattern.compile(<string>text</string><string>.+</string>);
Matcher matcher = pattern.matcher(ganzeDatei);
while (matcher.find()) {
    String string = matcher.group();
    ...

这很好用,但输出类似

<string>text</string><string>Name</string>

但我只想要这个:Name

我该怎么做?

3 个答案:

答案 0 :(得分:19)

通过将其包装在括号中来捕获要返回的文本,因此在此示例中,您的正则表达式应该变为

<string>text</string><string>(.+)</string>

然后您可以访问括号与

之间匹配的文本
matcher.group(1)

您正在调用的no-arg group方法返回与您的模式匹配的输入文本的整个部分,而您只需要一个与捕获组(括号)匹配的子序列。 / p>

答案 1 :(得分:5)

然后这样做:

Pattern pattern = Pattern.compile(<string>text</string><string>(.+)</string>);
        Matcher matcher = pattern.matcher(ganzeDatei);
        while (matcher.find()) {
            String string = matcher.group(1);
            ...

<强>参考:

答案 2 :(得分:-2)

您必须将group()想要获取的文字放入括号中。所以使用:

<string>(.+)</string>