0

この正規表現を使用して、href に特定の単語を含むハイパーリンクを照合しました

<a( .*?)? href=\".*?" + word + ".*?\"( .*?)?>.*?</a>

これは、一致したリンクの最初の出現を返します

今、同じ一致を持つすべてのハイパーリンクを見つける必要があり、この正規表現を試しました:

/<a [^>]*\bhref\s*=\s*"[^"]*word.*?<\/a>/

コンパイラにこの式を受け入れさせるのに問題があります。問題は、いくつかの特殊文字をエスケープしているようです。この部分が問題のようです

"[^"]

[ を \ でエスケープし、@ を二重引用符の前に置いてみましたが、うまくいきませんでした。

エラーは「コンパイル定数値が正しくありません」と表示されます。

コンパイラを満たすためにこの正規表現をフォーマットする方法を知っている人はいますか?

4

2 に答える 2

1

文字列内でエスケープする必要があるものはすべてエスケープできますが、文字列が @ 引用符で囲まれていると、正規表現がはるかに読みやすくなります。次に心配する必要があるのは、二重にする必要がある二重引用符だけです。

string expression = @"/<a [^>]*\bhref\s*=\s*""[^""]*word.*?<\/a>/";

注: コメントにあるように、この正規表現は失敗する可能性があります。私はそれをテストしていません。コンパイルできるように変更しただけです。

于 2013-06-06T07:16:16.577 に答える