正则表达式查找并替换任何不在另一个单词之后的单词

时间:2012-08-17 15:59:54

标签: c# regex string

我目前正在对这样的字符串运行一个简单的查找和替换:

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

但是,尝试将Name替换为WHATEVER会产生以下结果:

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

我需要更改第3行,但不能更改第1行。如何检查当前单词是否在点(.)之后并跳过替换该单词?

我在.NET 4.0中,我的正则表达式目前看起来像这样:

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

1 个答案:

答案 0 :(得分:3)

您可以在.上使用negative lookbehind(?<!\.)

这给出了:

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