在开始大括号{和冒号之间替换正则表达式
本文关键字:之间 替换 正则表达式 开始 | 更新日期: 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'":");