Java正则表达式:只需获得matcher组的一部分
我有一个Java正则表达式: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.
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>