2010-11-23 17 views
2

C#アプリケーションで正規表現を使用する必要があり、regex.matchメソッドを使用するために文字列として使用しようとしています。私の正規表現はid="(tt[0-9]+)\|imdbのようで、"id\"(tt[0-9]+)\\|imdb"のような文字列に変換しますが、動作しません。正規表現を文字列に変換するソリューションやアプリケーションはありますか?正規表現を文字列に変換する#

+3

あなたの文字列が欠落していますかは意図的ですか? –

答えて

2

エスケープを削除して、@記号を使用できます。

@"id=""(tt[0-9]+)\|imdb" 

注:C#では二重引用符に

1

を倍増させる必要があり、REGのEXPSを含む文字列の前@を追加するのは良いアイデアです:

@"id\"(tt[0-9]+)\\|imdb" 

それ以外の場合は正規表現エンジンが唯一の希望次の文字列を参照してください。

id"(tt[0-9]+)\|imdb 

ここで、\|はrecoではありませんあなたがそれを望むように怒っている。

+0

良いアドバイス、それほど良い説明ではありません。逐語的な文字列のバージョンでは、 '\"は '' ''に変更する必要があり、 '\\ |'の余分なバックスラッシュは削除する必要がありますが、OPの正規表現は非逐語的な文字列に対してうまく形成されます。実際の問題は、@AndrewCoxがコメントで指摘したように、 '='が見つからないということでした。 –

3

あなたが達成しようとしていることがわからないので、私は別のパスと別の投稿を行っています。

Regex.Matchメソッドは、照合しようとしているStringを取得する必要があります。構築されたRegExからStringに逆戻りしようとしているようです。その場合は、RegExのToString()を呼び出して、渡された式を取得します。

単に式を文字列として取得しようとしている場合は、pattern以下のvarは他の投稿に記載されているように@を使用するようになります。いずれにしても、RegEx自体に一致させるパターンが含まれている必要があります。

string text = "91919182389348487"; 
    string pattern = @"id=""(tt[0-9]+)\|imdb"; 

    Regex r = new Regex(pat, RegexOptions.IgnoreCase); 
    Match m = r.Match(text); 
    ... 
+0

これは完璧に機能したthanxです。 –

+2

@Emre答えとして受け入れるようにしてください –

関連する問題