2012-09-25 21 views
0

我有一個HTML解析器在努力工作,但我需要一個正則表達式來選擇沒有attriburte id =「optout」的錨。這是我目前的正則表達式,選擇所有與http有href的錨...這很好,只需要忽略id =「optout」的錨點 - 任何想法? 謝謝!Coldfusion的正則表達式不選擇具有特定ID的href

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

_「我有一個HTML解析器努力工作「 - 然後繼續使用它來做簡單的工作! –

+0

我設置的方式需要cf來選擇第一個鏈接...... :( – user1431633

+0

然後你幾乎可以肯定它的設置是錯誤的HTML解析器是爲這個任務明確設計的正則表達式最初是爲[regular](http: //en.wikipedia.org/wiki/Regular_language)模式匹配,甚至現代非常規正則表達式都不適合HTML解析的複雜性。 –

回答

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) 
相關問題