日期:2014-05-16  浏览次数:20372 次

请教一个正则:匹配含有某个字符串的标签
假如有一段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"&g