最後に一致しない正規表現

.net c# regex

私はこのようなパターンに一致するように正規表現を書きます。

すなわち 自己終了する “

しかしこれではない:

私は最初に思いつきました:

しかし、それは明らかに2番目の例で失敗し、私はこのような何かがうまくいくかもしれないと思いました:

] />

しかしそうではありません。 私はC#.NETを使用しています。

探しているのは “だけ

属性を持っているものです。 例えば 探している

しかしではない

.

  0  0


ベストアンサー

HTMLは正規のものではないので、HTMLで正規表現を使うのは問題になるでしょう。 最も単純な場合を除いて、HTMLパーサーを使用することをお勧めします。

4


これはあなたが探しているものと一致するでしょう、そしてあなたがあなたの最初の数回の試みで持っていた問題のあるケースと一致しません:

] *?/>

ただし、属性値に `>`文字を許可する必要がある場合は、次のようなものが必要になります。

] | "[^"] *? ")*?/>

これは、一致する二重引用符内でのみ `>`を許可します(一重引用符を許可するように同様に拡張することができます)。

探している特定の属性を正規表現に追加できます。例えばあなたの例では:

] *? style = "alskdjf" [^>] *?/>

4


通常のブラウザが処理しなければならないように、正規表現は乱雑なHTMLを解釈するのに深刻な問題を抱えるでしょう。 マークアップに対して行うことができる恐ろしい難読化には、さまざまな種類のものがあります。

http://www.codeplex.com/htmlagilitypack[*HTML Agility Pack *]は、あなたが本当に使いたいものであり、私が見た所では非常に良いレビューを得ています。 これは、あらゆる種類の破損したHTMLをDOMモデルに読み込むための堅牢なライブラリです。 私はそれがすばらしいライブラリであることを個人的に見いだしました、確かに他のものがそうであるように、多くはビジネスアプリケーションの文脈でライブラリを使用します。

2


タイトルとURLをコピーしました