我在正则表达式中有一个问题。
我想将嵌套的相同值组合成一个组。
但是,我试图使用正则表达式,我将无法工作。
示例字符串:
<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>
我想把它作为一个单独的小组。
我该怎么做?
答案 0 :(得分:1)
如果你想连续匹配三个这样的<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));
}
在这里演示: