Регулярное выражение с границами слова не совпадает
Я пытаюсь вычислить регулярное выражение для использования с 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
Который я думал, что понял... Я действительно борюсь с регулярным выражением, поэтому кто-то может помочь мне с этим регулярным выражением и объяснить, что я делаю неправильно?
1 ответ
Используйте также дословную строку для регулярного выражения, смотрите строковые литералы на 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));
Выход:
Регулярное регулярное выражение String:Projec isMatch:False
Строковое регулярное выражение: \bProject\b isMatch:True
В обычной строке удаляется последняя буква "t" регулярного выражения, а также пустая строка перед словом, потому что интерпретируемая строка \b
в качестве возврата и не передает его в интерпретатор регулярных выражений.
Так что либо избегайте обратной косой черты, чтобы из \\bProject\\b
\bProject\b
передается интерпретатору regex или использует дословную строку, чтобы строка не интерпретировала \b
,