在开始大括号{和冒号之间替换正则表达式

本文关键字:之间 替换 正则表达式 开始 | 更新日期: 2023-09-27 18:11:32

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

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

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

我试着做Regex.Replace(rectifyAfter, @"/{([^'s].+?)('s|$):", "{'"$1'":")。但是它不做替换。

谁能帮我一下吗?

在开始大括号{和冒号之间替换正则表达式

下面的正则表达式应该可以做到:

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

它的作用:

(?:'{) -匹配但不捕获左花括号

(?<Property>[a-z0-9]+)—捕获名为Property的捕获组中的属性名称

(?:':) -同样,匹配但不捕获属性

后的:所以,基本上,你要做的是匹配模式{Name:,但将其替换为{" + 值的Property + :

下面是进行替换的代码:

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);

${Property}是捕获组的名称,它将包含您的属性名称。

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

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