2012-08-17 2 views
1

Je suis actuellement en cours d'exécution d'une simple découverte et remplacer, sur des chaînes comme ceci:Regex pour rechercher et remplacer un mot qui est pas après un autre mot

1. User.Name "John" 
2. User.Age 20 
3. Name.Length 5 

Cependant, en essayant de remplacer Name avec WHATEVER résultats en ceci:

1. User.WHATEVER "John" 
2. User.Age 20 
3. WHATEVER.Length 5 

je devais changer de ligne 3, mais pas la ligne 1. Comment puis-je vérifier si le mot en cours est après un point (.) et sauter le remplacement de ce mot?

Je suis dans .NET 4.0 et mon regex ressemble actuellement à ceci:

result = new Regex(@"\b" + oldWord + @"\b").Replace(text, newWord); 
+0

Pour être Honnête, je pense que REGEX est trop utilisé. Il y a tellement de solutions faciles comme string.StartsWith() – Egor

Répondre

3

Vous pouvez utiliser un negative lookbehind sur .: (?<!\.)

qui donne:

result = new Regex(@"\b(?<!\.)" + oldWord + @"\b").Replace(text, newWord); 
+0

Donc, afin de passer si le mot précédent est "BADDIE" je voudrais écrire cela? - '(@" \ b (?

+1

@Geotarget: '(?

Questions connexes