假如有一段HTML是:
<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... 去查找到<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里面唯一的:<B>请问是东汉末年分出的三国吗?</B>然后得到最终的字符串:请问是东汉末年分出的三国吗?
最终取出来的希望是这样的分组:$0 对应的P标签全部内容
$1 请问是东汉末年分出的三国吗?(第一组返回该条件字符串所属的<p>标签内容,第二组返回里面<b>标签里的文本内容)不知道描述的够不够清楚,请大家给予帮助,万分感谢!

解决方案 »

  1.   

    <P.+?>[\d\D]+?<B>(.+?)</B>[\d\D]+?<A HREF="event:\d+"[\d\D]+?</p>
      

  2.   


    大哥,我用你的试了下,当我用event:1来匹配,
    <P.+?>[\d\D]+?<B>(.+?)</B>[\d\D]+?<A HREF="event:1+"[\d\D]+?</p>
    结果把前3个<p>的内容都返回了。。我只需要返回event:1对应的那个<p>
    你帮忙看看呢
      

  3.   

    <!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>