JAVA REGEX:Make 将相同的值嵌套到单个组中

JAVA REGEX:Make nested same values into single group

我对正则表达式有疑问。

我想将嵌套的相同值合并为一个组。

但是,我试图使用正则表达式我不会工作。

示例字符串:

<one listtype="NumberList1">one</one>
<one listtype="NumberList1">one</one>
<one listtype="NumberList1">one</one>

我想将三个 <one></one> 标签作为一个组。

我该怎么做?

我的正则表达式模式是:

Pattern pattern = Pattern.compile("(<one (.*?)>(.*?)</one>)+");
    Matcher matcher = pattern.matcher(val);
    while (matcher.find()) {
        System.out.println("group 1: " + matcher.group(1));
        }

我的结果是:

 group 1:<one listtype="NumberList1">one</one>
 group 1:<one listtype="NumberList1">one</one>
 group 1:<one listtype="NumberList1">one</one>

我要:

group 1:<one listtype="NumberList1">one</one><one listtype="NumberList1">one</one><one listtype="NumberList1">one</one>

我想把它做成一个组。

我该怎么做?

如果你想连续匹配三个这样的<one>标签,那么只需要使用合适的模式:

Pattern pattern = Pattern.compile("((?:<one (?:.*?)>(?:.*?)</one>\s*){3})");
Matcher matcher = pattern.matcher(val);
while (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
}

此处演示:

Rextester