请问一个正则:匹配含有某个字符串的标签
请教一个正则:匹配含有某个字符串的标签
假如有一段HTML是:
这是整理后是这样,以方便大家看。实际的文本就是一整串字符串连在一起。
我的想法是,里面有很多个<p>...</p>,其中有的p标签里含有一个<A HREF="event:数字"...,我要根据传入的数字,找到这个(event:+数字)字符串所属的直系p,并将这个p里面的(<B>XXXXX</B>)通过分组取出来
打个比方说:
参数为1,那么我根据一段正则, ...event:1... 去查找到
然后提取出这个P里面唯一的:
然后得到最终的字符串:
最终取出来的希望是这样的分组:
$0 对应的P标签全部内容
$1 请问是东汉末年分出的三国吗?
(第一组返回该条件字符串所属的<p>标签内容,第二组返回里面<b>标签里的文本内容)
不知道描述的够不够清楚,请大家给予帮助,万分感谢!
------解决方案--------------------
<P.+?>[\d\D]+?<B>(.+?)</B>[\d\D]+?<A HREF="event:\d+"[\d\D]+?</p>
------解决方案--------------------
假如有一段HTML是:
- HTML code
<P ALIGN="LEFT"> <FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> <B>以高效能电池技术应对光伏市场变动,这样是否是一个可行的方案?</B> <FONT COLOR="#666666">[老胡 2012-4-16 10:50]</FONT> <FONT COLOR="#0000FF"> <A HREF="event:0" TARGET=""><U>文本答疑</U></A> </FONT> </FONT> </P> <P ALIGN="LEFT"> <FONT FACE="Times New Roman" SIZE="12" COLOR="#D75509" LETTERSPACING="0" KERNING="0"> <B>可能星期五,我也不太确定</B> </FONT> </P> <P ALIGN="LEFT"> <FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> <B>请问是东汉末年分出的三国吗?</B> <FONT COLOR="#666666">[三国迷 2012-4-17 18:01]</FONT> <FONT COLOR="#0000FF"> <A HREF="event:1" TARGET=""><U>文本答疑</U></A> </FONT> </FONT> </P> <P ALIGN="LEFT"> <FONT FACE="Times New Roman" SIZE="12" COLOR="#D75509" LETTERSPACING="0" KERNING="0"> <B>恭喜你答对了!</B> </FONT> </P>
这是整理后是这样,以方便大家看。实际的文本就是一整串字符串连在一起。
我的想法是,里面有很多个<p>...</p>,其中有的p标签里含有一个<A HREF="event:数字"...,我要根据传入的数字,找到这个(event:+数字)字符串所属的直系p,并将这个p里面的(<B>XXXXX</B>)通过分组取出来
打个比方说:
参数为1,那么我根据一段正则, ...event:1... 去查找到
- HTML code
<P ALIGN="LEFT"> <FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> <B>请问是东汉末年分出的三国吗?</B> <FONT COLOR="#666666">[三国迷 2012-4-17 18:01]</FONT> <FONT COLOR="#0000FF"> <A HREF="event:1" TARGET=""><U>文本答疑</U></A> </FONT> </FONT> </P>
然后提取出这个P里面唯一的:
- HTML code
<B>请问是东汉末年分出的三国吗?</B>
然后得到最终的字符串:
- HTML code
请问是东汉末年分出的三国吗?
最终取出来的希望是这样的分组:
$0 对应的P标签全部内容
$1 请问是东汉末年分出的三国吗?
(第一组返回该条件字符串所属的<p>标签内容,第二组返回里面<b>标签里的文本内容)
不知道描述的够不够清楚,请大家给予帮助,万分感谢!
------解决方案--------------------
<P.+?>[\d\D]+?<B>(.+?)</B>[\d\D]+?<A HREF="event:\d+"[\d\D]+?</p>
------解决方案--------------------
- HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> </head> <body> <div id='d'> <P ALIGN="LEFT"> <FONT FACE="Times New Roman" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"> <B>请问是东汉末年分出的三国吗?</B> <FONT COLOR="#666666">[三国迷 2012-4-17 18:01]</FONT> <FONT COLOR="#0000FF"> <A HREF="event:1" TARGET=""><U>文本答疑</U></A> </FONT> </FONT> </P> </div> <script> var regex = /<p([\s\S](?!<\/p>))+?<b>(([\s\S](?!<\/p>))+?)<\/b>([\s\S](?!<\/p>))+?href="event:1"([\s\S](?!<\/p>))+[\s\S]<\/p>/i var html = document.getElementById('d').innerHTML; var mc = html.match(regex); alert(mc[2]) </script> </body> </html>