如何使用C#regex替换字符串中除一个之外的任何单词?

如何使用C#regex替换字符串中除一个之外的任何单词?,c#,regex,match,C#,Regex,Match,给定如下字符串: 修复此[HFW]需要大量[HFW]时间[HFW] 应该是这样的: [CW][CW][HFW][CW][CW][CW][HFW][CW][HFW] 我需要将任何单词替换为[CW],标签除外[HFW]。 我已经尝试了很多,我得到的最好的结果是: regex = new Regex(@"[^(\[HFW\])_]+"); cleanText = regex.Replace(cleanText, " [CW] "); 这几乎有效,但我忽略了第一个大写字母F,它是[HFW]标记的一部分

给定如下字符串:
修复此[HFW]需要大量[HFW]时间[HFW]

应该是这样的:
[CW][CW][HFW][CW][CW][CW][HFW][CW][HFW]

我需要将任何单词替换为
[CW]
,标签除外
[HFW]
。 我已经尝试了很多,我得到的最好的结果是:

regex = new Regex(@"[^(\[HFW\])_]+");
cleanText = regex.Replace(cleanText, " [CW] ");
这几乎有效,但我忽略了第一个大写字母F,它是
[HFW]
标记的一部分。我的意思是,它不会把
[HFW]
作为一个整体


谢谢

我有一个有点。。。古怪的但它为您的示例字符串提供了技巧:

(?<!\[|F|\[F)\w+(?!W|\]|W\]\])

为什么是正则表达式?通过标记字符串不是更容易做到吗?这不起作用,它用[CW]替换每个字符,除了[HFW]。我需要替换所有的单词。@user569605它正在替换所有的单词,我已经测试过了。您当前的模式将一系列单词替换为单个
[CW]
。这就是你真正想要的吗?我找到了另一个表达式:
\w+(?=\s)|(?这是我的错误,它包含了整个单词。非常感谢:)@user569605太棒了!:)
\w+(?=\s)|(?<=\s)\w+