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

Tob*_*ias 6 java regex

我有一个Java正则表达式:

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

这工作正常,但输出就像

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

但我只想要这个: Name

我怎样才能做到这一点?

And*_*yle 19

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

<string>text</string><string>(.+)</string>
Run Code Online (Sandbox Code Playgroud)

然后,您可以访问括号之间匹配的文本

matcher.group(1)
Run Code Online (Sandbox Code Playgroud)

您正在调用的无参数方法返回与您的模式匹配的输入文本的整个部分,而您只需要一个与捕获组(括号)匹配的子序列.


Sea*_*oyd 5

然后这样做:

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

参考: