JAVA正则表达式:将嵌套的相同值放入单个组中

JAVA正则表达式:将嵌套的相同值放入单个组中,java,regex,regex-group,Java,Regex,Regex Group,我有一个关于正则表达式的问题 我希望将相同的值嵌套到单个组中 但是,我试图使用正则表达式,我不会工作 示例字符串: 我想把三个标签作为一个组 我该怎么做 我的正则表达式模式是: 我的结果是: 我想: 我想把它作为一个小组来做 如何才能做到这一点?如果要连续匹配三个这样的标记,请使用适当的模式: Pattern pattern = Pattern.compile("((?:<one (?:.*?)>(?:.*?)</one>\\s*){3})"); Matcher matc

我有一个关于正则表达式的问题

我希望将相同的值嵌套到单个组中

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

示例字符串:

我想把三个标签作为一个组

我该怎么做

我的正则表达式模式是:

我的结果是:

我想:

我想把它作为一个小组来做


如何才能做到这一点?

如果要连续匹配三个这样的标记,请使用适当的模式:

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


抱歉,我使用的正则表达式有点小问题,它现在似乎可以工作了。谢谢兄弟。但是,万一它超过3,我怎么才能捕获兄弟。只要把{3}改成你想要的数字或者用*来表示任何数字。我正在尝试这个?:?:.*\\s*{*}兄弟。但是,在主线程java.util.regex.PatternSyntaxException中出现了类似以下异常的错误:索引33附近的非法重复?::.*\s*{*}我已经回答了您的问题。如果你不认识我,就别跟我开玩笑。
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>
Pattern pattern = Pattern.compile("((?:<one (?:.*?)>(?:.*?)</one>\\s*){3})");
Matcher matcher = pattern.matcher(val);
while (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
}