Java正则表达式:只需获得matcher组的一部分

Java正则表达式:只需获得matcher组的一部分,java,regex,Java,Regex,我有一个Java正则表达式: Pattern pattern = Pattern.compile(<string>text</string><string>.+</string>); Matcher matcher = pattern.matcher(ganzeDatei); while (matcher.find()) { String string = matcher.group(); ... Pattern=Pattern.

我有一个Java正则表达式:

Pattern pattern = Pattern.compile(<string>text</string><string>.+</string>);
Matcher matcher = pattern.matcher(ganzeDatei);
while (matcher.find()) {
    String string = matcher.group();
    ...
Pattern=Pattern.compile(text.+);
Matcher-Matcher=pattern.Matcher(ganzeDatei);
while(matcher.find()){
String String=matcher.group();
...
这很好,但输出类似于

textName

但我只想要这个:
Name


我如何才能做到这一点?

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

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

然后执行以下操作:

Pattern pattern = Pattern.compile(<string>text</string><string>(.+)</string>);
        Matcher matcher = pattern.matcher(ganzeDatei);
        while (matcher.find()) {
            String string = matcher.group(1);
            ...
Pattern=Pattern.compile(text(+);
Matcher-Matcher=pattern.Matcher(ganzeDatei);
while(matcher.find()){
String String=matcher.group(1);
...
参考资料:

  • 模式JavaDoc:
  • Matcher JavaDoc:
  • Matcher JavaDoc:

您必须将希望通过
group()
获取的文本放入括号中。因此请使用:

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