0

私は HTML パーサーで大変な作業を行っていますが、属性 id="optout" を持たないアンカーを選択するには正規表現が必要です。http で href を持つすべてのアンカーを選択する私の現在の正規表現は次のとおりです...これは、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 に答える