要するに: @"^(?!Debug\("")([^""]*""(?<Text>[^""]*)"")*.*$"
内容:
- 文字列がで始まる場合、文字列と一致しません
Debug("
- 最初の文字列に出会うまで文字列に沿って走り、それ
"
を通過します
"
が見つからず、文字列の最後に到達した場合は、停止します。
- 名前の付いたグループへの「記録」を開始します
Text
- 次の弦に出会うまで弦に沿って走り
"
、録音を停止し、それを通り過ぎます。
- 手順2に戻ります
結果:"
と呼ばれるグループ内のの間にすべての文字列がありますText
。
やるべきこと:\s
それを複数行の正規表現に変換し、より良いフィルターとしてデバッグの前にwhitepsaces()をサポートします。
その他の使用例とテスト:
var regex = new Regex(@"^(?!Debug\("")([^""]*""(?<Text>[^""]*)"")*.*$");
var inputs = new[]
{
@"string a = ""something"";",
@"sring b = ""something else"" + "" more"";",
@"Print(""this should match"");",
@"Print(""So"" + ""should this"");",
@"Debug(""just some bebug text"");",
@"Debug(""more "" + ""debug text"");"
};
foreach (var input in inputs)
{
Console.WriteLine(input);
Console.WriteLine("=====");
var match = regex.Match(input);
var captures = match.Groups["Text"].Captures;
for (var i = 0; i < captures.Count; i++)
{
Console.WriteLine(captures[i].Value);
}
Console.WriteLine("=====");
Console.WriteLine();
}
出力:
string a = "something";
=====
something
=====
sring b = "something else" + " more";
=====
something else
more
=====
Print("this should match");
=====
this should match
=====
Print("So" + "should this");
=====
So
should this
=====
Debug("just some bebug text");
=====
=====
Debug("more " + "debug text");
=====
=====