有如下代码:
 <channel>
   <title>蓝色理想</title>
 </channel>
 <item>
   <title>界面设计测试规范</title>
 </item>
 <item>
     <title>《古典写实美女》漫画教程</title>
 </item>
 <item>
     <title>安远――消失的光年</title>
 </item>
 <item>
     <title>asp.net 2.0多语言网站解决方案</title>
 </item> 
要求匹配item里的title而不匹配channel里的title。
基本正则:
 /<title>[\s\S]*?<\/title>/gi 
首先是title标签,内容为任意字符若干个,然后是title结束标签。这个正则已经能匹配到所有的title标签。
首先,我简单地修改了一下原正则:
 /<title>[^<>]*?<\/title>/gi, 
因为title里面不应该再嵌有其它标签,这个正则同样是匹配所有标题的内容,最后再加上不去匹配channel中的title。整个正则如下:
 /<title>[^<>]*?<\/title>(?!\s*<\/channel>)/gi 
(?!\s*<\/channel>)表示要匹配字符串的后面不能跟着若干个空格和一个channel的结束标签。