更正字符串中出现的错误

Correct wrong occurrences in a string

错误控件在文本中提供如下内容:

{{\field{\*\fldinst{HYPERLINK http://yandex.ru }}{\fldrslt{http://yandex.ru\ul0\cf0}}}}\f0\fs24 

但正确的版本是:

{{\field{\*\fldinst{HYPERLINK http://yandex.ru }}{\fldrslt{\ul\cf1 http://yandex.ru}}}}\f0\fs24 

我真的是正则表达式和其他文本工具的新手,所以我不知道如何以正确的方式用正确的变体替换所有出现的地方。我们现在不能重写控制逻辑,还有更多的 WinAPI 代码。 平台是 .NET Framework 2.0

好吧,基本上你生成的正则表达式是可以的,就像它在工作中所做的那样,并找到所有像 {http://yandex.com\ul0\cf0}.

这样的事件

如果我正确理解了您的目标 - 每个捕获组中您唯一需要的转换 - 是将 {http://yandex.com\ul0\cf0} 转换为 {\ul\cf1 http://yandex.com}

这可以通过 Regex.Replace override having MatchEvaluator 作为参数轻松完成。

例如,像这样的东西(注意,这不是最优雅的解决方案,而是 "quick and dirty"):

 var result = Regex.Replace(source_Text, regex_pattern,
                x => x.Groups[0].Value.Replace(@"\ul0\cf0", "").Replace("{", @"{\ul\cf1 "));