2009-04-28 9 views
2

HTMLドキュメントからメタタグを抽出するこの正規表現はありますが、Webアプリケーションに組み込む間にエラーが発生します。メタタグを抽出するためのC#の正規表現の問題

式は

@"<meta[\\s]+[^>]*?name[\\s]?=[\\s\"\']+(.*?)[\\s\"\']+content[\\s]?=[\\s\"\']+(.*?)[\"\']+.*?>" ; 

それに何か問題があるのですか?

+0

正規表現が有効です。これは、エラーを投げているサンプルコードを投稿した場合に役立ちます。 –

+0

正規表現があなたに与えているエラーを実際に述べるとよいでしょう。そして、おそらく少し大きいコードサンプル、エラーが発生する行と。 – pyrocumulus

+0

正規表現は無効な入力も解析します(たとえば、

答えて

8

投稿したサンプルで@(逐語的な文字列)の構文とスラッシュをエスケープしています。 @を削除するか、余分なスラッシュを削除して二重引用符をエスケープする必要があります。

(あなたが継続的に正規表現を扱うことになるだろうと、私はRegExBuddyのコピーに投資することをお勧め、何が価値があるため。)

+0

「逐語的な弦」と呼ばれています。 RegexBuddyの利点の1つは、適切な正規表現を作成するのを手伝った後で、C#のverbatim文字列を含め、必要な形式で正規表現をエクスポートできることです。 –

5

文字列リテラルを使用して(@「」 )あなたは、バックスラッシュを二重にする必要はありません - それはあるとして、文字列のすべてを受け入れている - 二重にする必要がある二重引用符を除い:

@"<meta[\s]+[^>]*?name[\s]?=[\s""']+(.*?)[\s""']+content[\s]?=[\s""']+(.*?)[""']+.*?>"

0

Jeromyは正しいです。あなたはエスケープされた文字列と文字列litteralを使用しています。正規表現自体は問題ありません...だから、問題はどこにあるのでしょうか。