论坛首页 Java版

模式中如何对连续的几个字符串(固定顺序)取非?

浏览 315 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-10-12 关键字: 正则表达式
需求:
将一段字符串中的所有anchor链接<a>XXX</a>取出来。

如果XXX中没有html标签,即没有<>这样的字符,我可以将XXX写成这样的模式(非<字符)

< *a *>[^<]*< */a *>


但如果XXX中有html标签,如

begin<a><B><FONT size=5>register</FONT></B></a>end another<a>login</a>end


我的期望是提取出<a><B><FONT size=5>register</FONT></B></a>和<a>login</a>

因为<a>和</a>之间可以有<>/这些字符

我写成这样

< *a *>[\\w\\d =&;<>/]*< */a *>


这样,<B><FONT size=5>register</FONT></B>和login确实被涵盖了,但同时也把</a>圈进去了

结果为

<a><B><FONT size=5>register</FONT></B></a>end another<a>login</a>

所以我得反其道,将XXX的模式描述为非</a>这样的字符

我尝试

< *a *>[^(< */a *>)]*< */a *>


希望对< */a *>整体取非,但[^(< */a *>)]好像等价于[^< */a *>],仍是对单个字符取非,匹配的结果数量为0

如何对连续的几个字符串取非,抑或有其他解决办法?
   
最后更新时间:2007-10-12
我也想知道答案,关注中...
   
0 请登录后投票
论坛首页 Java版

跳转论坛:
JavaEye推荐