具有单词边界的正则表达式不匹配

本文关键字:正则表达式 不匹配 边界 单词 | 更新日期: 2023-09-27 18:10:56

我正在尝试计算一个正则表达式,以使用具有DocumentWell功能的TFS电动工具。

我现在正在一个控制台应用程序中测试这个。

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

我以为我明白了…我真的很纠结于正则表达式,所以有人能帮我解决这个正则表达式,并解释我做错了什么?

具有单词边界的正则表达式不匹配

也可以使用逐字字符串作为正则表达式,参见msdn

上的字符串文字
Console.WriteLine(Regex.IsMatch(@"C:'User'User'My Documents'Visual Studio 2010'Project'", @"'bProject'b"));

否则必须转义两次

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: project isMatch:False
逐字字符串regex: 'bProject'b isMatch:True

在正则字符串中,Regex的最后一个"t"被删除,单词之前的空字符串也被删除,这是因为字符串将'b解释为退格,并且不将其移交给Regex解释器。

因此,要么转义反斜杠,以便从''bProject''b 'bProject'b被交给regex解释器,或使用逐字字符串,使字符串不解释'b