2013-04-26 1 views
0

J'essaie de calculer une expression régulière à utiliser avec TFS Power Tools avec la fonctionnalité DocumentWell.L'expression régulière avec les limites de mots ne correspond pas

Je suis en train de tester cela dans une application console pour le moment.

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

C'est ce que j'ai essayé (la sortie est « Faux », donc ma chaîne regex est \bProject\b j'ai suivi à travers le lien suivant:.

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

Ce que je pensais que je compris ... J'ai vraiment du mal avec regex alors quelqu'un pourrait-il m'aider avec cette regex et expliquer ce que je fais mal?

Répondre

2

Utilisez aussi une chaîne verbatim pour l'expression rationnelle, voir String literals on msdn

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

sinon vous devez échapper deux fois

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

Voir la différence de chaîne régulière et mot pour mot

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)); 

Sortie:

cordes Regular regex: Projec isMatch: Faux
Verba tim Chaîne d'expression rationnelle: \ bProject \ b isMatch: True

Dans la chaîne régulière du dernier « t » du Regex est supprimé et aussi la chaîne vide avant le mot, qui est parce que la chaîne interprétée \b comme backspace et ne le remet pas à l'interprète de regex.

Evadez soit la barre oblique inverse de sorte que de \\bProject\\b\bProject\b est remis à l'interprète regex, ou utiliser une chaîne mot pour mot, de sorte que la chaîne n'interprète pas la \b.

Questions connexes