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));
}
此处演示:
我对正则表达式有疑问。
我想将嵌套的相同值合并为一个组。
但是,我试图使用正则表达式我不会工作。
示例字符串:
<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));
}
此处演示: