具有单词边界的正则表达式不匹配
本文关键字:正则表达式 不匹配 边界 单词 | 更新日期: 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
。我已经看完了下面的链接:
我以为我明白了…我真的很纠结于正则表达式,所以有人能帮我解决这个正则表达式,并解释我做错了什么?
也可以使用逐字字符串作为正则表达式,参见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
。