簡體   English   中英

用正則表達式替換大括號{和冒號之間:

[英]Regex to replace between starting curly bracket { and colon :

我想在大括號和冒號之間替換字符串的一部分。 假設我有一個像這樣的字符串:

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

因此,現在我想將字符串{Name:的部分替換為{"Name":

我嘗試做Regex.Replace(rectifyAfter, @"/{([^\\s].+?)(\\s|$):", "{\\"$1\\":") 但這並不能替代。

有人可以幫我嗎?

以下正則表達式可以解決問題:

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

它能做什么:

(?:\\{) -匹配但不捕獲左花括號

(?<Property>[a-z0-9]+) -在名為Property的捕獲組中捕獲屬性的名稱

(?:\\:) -再次匹配但不捕獲屬性后的:

因此,基本上,您想要做的就是匹配模式{Name:但是將其替換為{" + Property group + :

下面是執行替換的代碼:

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\":");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM