0

この機能を備えた TFS Power Tools で使用する正規表現を計算しようとしていDocumentWellます。

現在、コンソール アプリケーションでこれをテストしています。

Console.WriteLine(Regex.IsMatch(@"C:\User\User\My Documents\Visual Studio 2010\Project\", "\bProject\b"));

これは私が試したものです(出力は「False」なので、正規表現文字列は\bProject\bです。次のリンクをたどりました:

http://www.regular-expressions.info/wordboundaries.html

私は理解したと思いました...私は正規表現に本当に苦労しているので、誰かがこの正規表現で私を助けて、私が間違っていることを説明してもらえますか?

4

1 に答える 1

2

正規表現にはそのままの文字列も使用してください。msdn の文字列リテラルを参照してください。

Console.WriteLine(Regex.IsMatch(@"C:\User\User\My Documents\Visual Studio 2010\Project\", @"\bProject\b"));

そうしないと、2回エスケープする必要があります

Console.WriteLine(Regex.IsMatch(@"C:\User\User\My Documents\Visual Studio 2010\Project\", "\\bProject\\b"));

通常の文字列と逐語的な文字列の違いを確認する

string input = @"C:\User\User\My Documents\Visual Studio 2010\Project\";

string reg = "\bProject\b";
string regVerbatim = @"\bProject\b";

Regex r = new Regex(reg);
Regex rVerbatim = new Regex(regVerbatim);

Console.Write("Regular String regex: " + r.ToString() + " isMatch :");
Console.WriteLine(r.IsMatch(input));
Console.Write("Verbatim String regex: " + rVerbatim.ToString() + " isMatch :");
Console.WriteLine(rVerbatim.IsMatch(input));

出力:

通常の文字列 regex:Projec isMatch :False
Verbatim String regex: \bProject\b isMatch :True

通常の文字列では、正規表現の最後の「t」が削除され、単語の前の空の文字列も削除されます。これは、文字列\bがバックスペースとして解釈され、正規表現インタープリターに渡されないためです。

そのため、バックスラッシュをエスケープして from\\bProject\\b \bProject\bが正規表現インタープリターに渡されるようにするか、逐語的な文字列を使用して、文字列が . を解釈しないようにします\b

于 2013-04-26T11:36:21.433 に答える