0

我有一个 HTML 解析器在做艰苦的工作,但我需要一个正则表达式来选择没有属性 id="optout" 的锚。这是我当前的正则表达式,它选择所有具有href和http的锚点......这很好,只需要忽略那些id =“optout”的锚点——有什么想法吗?谢谢!

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

1 回答 1

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 )
于 2012-09-25T23:29:17.307 回答