2

在 C# 中使用正则表达式,如果之前没有特定的单词,我应该替换它在我的示例中,它将“Ballmer”替换为“Steve Ballmer”

在:

...text...Ballmer...text

结果:

...text...Steve Ballmer...text

但如果“史蒂夫”已经在那里,我不应该再添加史蒂夫。

在:

...text...Steve Ballmer...text

结果:

...text...Steve Ballmer...text

谢谢。

4

3 回答 3

4

使用负后瞻(?<!...)和正前瞻(?=...)

string output = Regex.Replace(input, @"(?<!Steve )(?=Ballmer)", "Steve ");
于 2012-10-29T22:10:50.283 回答
2

匹配时使用否定的lookbehindBallmer

string result = Regex.Replace(input, @"(?<!Steve )Ballmer", "Steve Ballmer");

这将完全符合您的要求。匹配任何Ballmer不是紧跟在前面的Steve(和一个空格)。

于 2012-10-29T22:08:37.230 回答
0

正则表达式很有趣,但在使用大炮之前尝试更简单的工具也是值得的。这个特殊问题可以通过基本的查找和替换来解决

  1. 将“鲍尔默”替换为“史蒂夫鲍尔默”
  2. 将“史蒂夫·史蒂夫·鲍尔默”替换为“史蒂夫·鲍尔默”(以纠正任何过度劳累)

或者

  1. 将“史蒂夫鲍尔默”替换为“鲍尔默”
  2. 将“鲍尔默”替换为“史蒂夫鲍尔默”
于 2012-10-29T23:56:14.213 回答