Регулярное выражение с границами слова не совпадает

Я пытаюсь вычислить регулярное выражение для использования с 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,

Другие вопросы по тегам