2010-11-26 3 views
1

ファイル内のパターンを検索しています。このパターンは1行に限定されない。このパターンを含むために、2つ以上のライン、すなわち2つ以上のライングループにわたって広がる。したがって、ファイル内で行単位でループし、パターンが存在するかどうかを確認することはできません。パターンは以下の通りである:ファイル内の各行をループせずに、ファイルのコンテンツ内の正規表現パターンをどのように一致させることができますか?

/public.+\s+(\w+)\([^\)]*\)\s*.+?return\s*\w+?\.GetQuestion\s*\(/g

は、誰もがファイル内でパターンに一致する方法をコーディングC#を教えてくださいことはできますか?

+1

ホーリークラップ!!! 11の質問とそのうちの1つは受け入れられる価値がありませんでしたか?あなたは得ることを得なければならない。 – Keng

答えて

4

私は(RandomNoobにより示唆されるように、ReadToEndを使用して)あなたは、ファイル全体を読む必要が疑われるが、その後もSingleline modeにそれを置くためにRegexOptions.Singlelineを指定:

RegexOptions.Singlelineオプション、またはSインラインオプション正規表現エンジンは入力文字列を1行であるかのように扱います。これは、改行文字\ nまたは\ u000A以外のすべての文字をマッチングするのではなく、ピリオド(。)言語要素の動作を変更してすべての文字に一致させることで行います。

Regex pattern = new Regex(
    @"public.+\s+(\w+)\([^\)]*\)\s*.+?return\s*\w+?\.GetQuestion\s*\(", 
    RegexOptions.Singleline); 
+0

Jon Skeetが私の名前をタイプしたので、私はこのページを印刷してキューブに入れます – kd7

1

StreamReader ReadToEndを使用してください。

+1

+1あなたが最後に軸を得ることを知っている努力のために+1。 – Keng

関連する問題