带有双重卷曲/方括号的C#中的字符串替换问题

时间:2017-12-20 00:13:14

标签: c# string replace

我试图找到一种方法来替换预定义的"标签"在使用c#的替代文本的文本中,但是我很难找到使用string.replace或合适的正则表达式解决方案的简单方法。

用例:

将给定文本中{{xxxxxx}}的所有实例替换为不同的内容,例如" yyyyy yyyyyy"

如果{{xxxxx}}本身有问题,我可以改为[[xxxxxx]]或((xxxxxx))。

目前,我无法找到适用于上述任何模式的单个String或Regex操作。

2 个答案:

答案 0 :(得分:1)

这是如何轻松实现标签替换的Regex示例

\{\{(.*?)}}

<强>代码

var someText = "blah blah blah {{Hello}} blah";
var substitute = "Rah";
var result = Regex.Replace(someText, @"\{\{(.*?)}}", substitute);

输出

blah blah blah Rah blah

Explination

  • {匹配字符{字面(区分大小写)
  • {匹配字符{字面(区分大小写))
    • 第一个捕获组(。*?)
      • 。*?匹配任何字符(行终止符除外)
      • *?量词 - 在零和无限次之间匹配,尽可能少,根据需要扩展(懒惰)
  • }}字面匹配字符}}(区分大小写)
    • 全局模式标记
      • g modifier:global。所有比赛(首场比赛后不返回)

答案 1 :(得分:0)

在某些情况下(如Console.WriteLine的一些重载),字符串中的花括号可能会被解释为开始和结束format item。但是,您提供的示例代码为works for me