Coldfusion正则表达式不选择具有特定ID的href

时间:2012-09-25 22:18:04

标签: regex coldfusion html-parsing coldfusion-9

我有一个HTML解析器正在努力工作,但我需要一个正则表达式来选择没有attriburte id =“optout”的锚点。这是我当前的正则表达式,选择所有具有http的href的锚...这很好,只需要忽略那些id =“optout”的锚点 - 任何想法? 谢谢!

<cfset matches = ReMatch('<a[^>]*href="http[^"]*"[^>]*>(.+?)</a>', arguments.htmlCode) />

1 个答案:

答案 0 :(得分:2)

正则表达式是完成此任务的错误工具,并且鉴于您已经涉及到HTML解析器,因此没有理由不继续使用它!

以下是使用HTML解析器(jsoup)执行此操作的简单方法:

jsoup.parse( Arguments.HtmlCode ).select('a:not([id=optout])')

这是一种远不那么可维护的正则表达方式:

rematch( '(?i)<a\s*(?:(?!id\s*=\s*[''"]optout[''"])[^>])+>(?:[^<]+|<(?!/a>))+</a>' , Arguments.HtmlCode )