如何使用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+