Java中的正则表达式的匹配和分组

时间:2022-11-11 14:48:17

 

要求是以h2标题为分隔线,分隔后,组成的字符串是H2和UL;这下面这个例子是分为二个字符串

 

<h2>第一个标题</h2>

<ul>

<li>子标题</li>

<li>子标题</li>

<li>子标题</li>

<li>子标题</li>

</ul>


<h2>第二个标题</h2>

<ul>

<li>子标题</li>

<li>子标题</li>

<li>子标题</li>

<li>子标题</li>

</ul>

 

Java实现

从<h2开始匹配到</ul>为结束点内的为一个组。中间要排除<h2>的标签。要不然会从第一个 H2开始到最后一个UL结束这样匹配出来的字符串还是一个,所以中要排除中间有<h2>的标签,这个就分了二部分字符串,第一部分是一个H2和UL 第二部分也是一个<H2和Ul.

 

    String reg_charset = "<h2([\\w<//>\u4E00-\u9FA5]+((.(?!<h2>))*.)</ul>)";  
p = Pattern.compile(reg_charset);
m = p.matcher("" +
"<h2>笔记本整机h2笔记本整机h2</h2><hs> " +
"<ul class=\"cate-item clearfix\"><li> <i></i><a href=\"/price_cate_64.html\">笔记本</a> <li></ul>"+
"<ul class=\"cate-item clearfix\"><li><h3><i>【 中什么</i><li></ul>"+
"<h2>笔记本整机5笔记本整机h5</h2> " +
"<ul class=\"cate-item clearfix\"><li><h3><i></i><a href=\"/price_cate_64.html\">笔记本</a><li></ul>"+
"<ul class=\"cate-item clearfix\"><li><h3><i></i><a href=\"/price_cate_64.html\">笔记本2</a></h3><li></ul>" );
System.out.println(m.groupCount());
while (m.find())
{
System.out.println(m.group());
}