正则表达式匹配html标签问题

先给出两个字符串
<p>abcdedfeasdfjklasdfjklsadfjklasdfjkltextasdf</p>
<a href="....">fjklsascc</a>
<p style="text">text</p>

我需要一个正则表达式,要求
匹配字符text
匹配规则:
1.匹配的字符在html标签外(就是不在<>之内,<text>就不匹配,当然你也可以想起他判断方法)
2.匹配的字符不能够自身是超链接(就是不能匹配这种<a>text</a>)

自身写出来了一种匹配方法,就是判断是否在><之间,然后结尾不是a>,这样也就解决了问题,但是我希望单纯的就只是在前面进行匹配。我尝试的匹配规则是
\<([^a][^<]*)\>text([^>]*)\<
但是这样的话,虽然在<a>内不会匹配,这样<p>也不会匹配了p只有一个字符。
谁能告诉我解决这个匹配问题。(一个字符P怎么解决?)

<(a[^> ]+(?=[ >])|[^a][^> ]*(?=[ >]))[^>]*>([^<]*)text([^<]*)</(a[^> ]+(?=[ >])|[^a][^> ]*(?=[ >]))[^>]*>
可以匹配举例:
<abbr>
<address>
<base>
<p>
<p style=...>
不能匹配举例:
<a>
<a href...>

即,如果标记是以a开头但不仅仅是<a>的的标记就可以匹配,比如<abbr><address>,但<a>就不能匹配。不是以a开头但标记中有a的也可以匹配。当然,你要求的其他情况也满足。

是麻烦了一点,或许还有简单一点的式子,不过这个可以用。你的语法好像要在<>前加\,自己加吧!有错误或想要解释的话,用百度的短消息功能联系我。

原创首发………………
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-16
看看 是不是你想要的效果
(?<=<(a[^>\s].*?|[^a].*?)>)(.*?)(?=<)

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网