1

マッチの成功が偽と等しいのはなぜですか? 以下のパターンと Regexbuddy での入力をテストしましたが、成功しました。

string pattern = @"(?i)(<!-- START -->)(.*?)(?i)(<!-- END -->)";
string input = @"Hello
    <!-- START -->
    is there anyone out there?
    <!-- END -->";

Match match = Regex.Match(input, pattern, RegexOptions.Multiline);
if (match.Success) //-- FALSE!
{
    string found = match.Groups[1].Value;
    Console.WriteLine(found);
}

ここに画像の説明を入力

4

3 に答える 3

3

これを試してみてください

string pattern = @"(?is)(<!-- START -->)(.*?)(<!-- END -->)";
string input = @"Hello
    <!-- START -->
    is there anyone out there?
    <!-- END -->";

Match match = Regex.Match(input, pattern, RegexOptions.None);
if (match.Success) //-- FALSE!
{
    string found = match.Groups[1].Value;
    Console.WriteLine(found);
}

sオプションを使用すると、パターンがと.を含む任意の文字に一致するように\rなり\nます。

于 2012-07-19T05:22:16.313 に答える
3

から: http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regexoptions.aspx

RegexOptions.Multiline原因^とその$意味を変更して、入力のどの行でも一致するようにします。.一致しません\n。そのためには、使用する必要がありますRegexOptions.Singleline

于 2012-07-19T05:18:57.173 に答える
0

単一行オプションを使用

Regex RegexObj = new Regex("(?i)(<!-- START -->)(.*?)(?i)(<!-- END -->)",
        RegexOptions.Singleline);
于 2012-07-19T05:20:07.680 に答える