我有一个 HTML 解析器在做艰苦的工作,但我需要一个正则表达式来选择没有属性 id="optout" 的锚。这是我当前的正则表达式,它选择所有具有href和http的锚点......这很好,只需要忽略那些id =“optout”的锚点——有什么想法吗?谢谢!
<cfset matches = ReMatch('<a[^>]*href="http[^"]*"[^>]*>(.+?)</a>', arguments.htmlCode) />
我有一个 HTML 解析器在做艰苦的工作,但我需要一个正则表达式来选择没有属性 id="optout" 的锚。这是我当前的正则表达式,它选择所有具有href和http的锚点......这很好,只需要忽略那些id =“optout”的锚点——有什么想法吗?谢谢!
<cfset matches = ReMatch('<a[^>]*href="http[^"]*"[^>]*>(.+?)</a>', arguments.htmlCode) />
正则表达式是执行此任务的错误工具,并且鉴于您已经使用了 HTML 解析器,没有理由不继续使用它!
这是使用 HTML 解析器 ( jsoup ) 执行此操作的简单方法:
jsoup.parse( Arguments.HtmlCode ).select('a:not([id=optout])')
这是可维护性差得多的正则表达式方法:
rematch( '(?i)<a\s*(?:(?!id\s*=\s*[''"]optout[''"])[^>])+>(?:[^<]+|<(?!/a>))+</a>' , Arguments.HtmlCode )