正则表达式替换起始大括号{和冒号:

时间:2016-10-05 11:02:46

标签: c# regex

我想替换花括号和冒号之间的一部分字符串。假设我有一个字符串:

{Name: {\"before\":'Aj', \"after\":'Ajay'} },

所以现在我想用{Name:替换字符串{"Name":的部分。

我尝试过Regex.Replace(rectifyAfter, @"/{([^\s].+?)(\s|$):", "{\"$1\":")。但它没有做替换。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

以下正则表达式可以解决这个问题:

(?:\{)(?<Property>[a-z0-9]+)(?:\:)

它的作用:

(?:\{) - 匹配,但不会捕获开头大括号

(?<Property>[a-z0-9]+) - 捕获名为Property

的捕获组中的属性名称

(?:\:) - 再次匹配但未在属性后捕获:

所以,基本上,您要做的是匹配模式{Name:,但将其替换为{" + Property + {{ 1}}。

以下是替换代码:

:

string pattern = @"(?:\{)(?<Property>[a-z0-9]+)(?:\:)"; Regex regex = new Regex(pattern, RegexOptions.IgnoreCase); string targetString = @"{Name: {\""before\"":'Aj', \""after\"":'Ajay'} },"; string replacement = @"{""${Property}"":"; return regex.Replace(targetString, replacement); 是捕获组的名称,它将保存您的属性的名称。

答案 1 :(得分:0)

我不明白你为什么需要正则表达式。只需使用简单的.Replace

即可
string json = "" //Whatever your JSON string is.
json = json.Replace("{Name:", "{\"Name\":");