在 C# 中使用正则表达式,如果之前没有特定的单词,我应该替换它在我的示例中,它将“Ballmer”替换为“Steve Ballmer”
在:
...text...Ballmer...text
结果:
...text...Steve Ballmer...text
但如果“史蒂夫”已经在那里,我不应该再添加史蒂夫。
在:
...text...Steve Ballmer...text
结果:
...text...Steve Ballmer...text
谢谢。
在 C# 中使用正则表达式,如果之前没有特定的单词,我应该替换它在我的示例中,它将“Ballmer”替换为“Steve Ballmer”
在:
...text...Ballmer...text
结果:
...text...Steve Ballmer...text
但如果“史蒂夫”已经在那里,我不应该再添加史蒂夫。
在:
...text...Steve Ballmer...text
结果:
...text...Steve Ballmer...text
谢谢。
使用负后瞻(?<!...)和正前瞻(?=...)
string output = Regex.Replace(input, @"(?<!Steve )(?=Ballmer)", "Steve ");
匹配时使用否定的lookbehindBallmer:
string result = Regex.Replace(input, @"(?<!Steve )Ballmer", "Steve Ballmer");
这将完全符合您的要求。匹配任何Ballmer不是紧跟在前面的Steve(和一个空格)。
正则表达式很有趣,但在使用大炮之前尝试更简单的工具也是值得的。这个特殊问题可以通过基本的查找和替换来解决
或者