现在我是新手使用正则表达式,所以我非常感谢你的帮助。
我有一个非常大的字符串(我正在将一个as3文件解析为json),我需要在对象中找到那些尾随的逗号。
这是我正在使用的正则表达式
public static string TrimTraillingCommas(string jsonCode)
{
var regex = new Regex(@"(.*?),\s*(\}|\])", (RegexOptions.Multiline));
return regex.Replace(jsonCode, m => String.Format("{0} {1}", m.Groups[1].Value, m.Groups[2].Value));
}
问题在于它真的很慢。如果不在字符串中使用它,则完成程序的时间为:00:00:00.0289668
并且使用它:00:00:00.4096293
有人可以建议使用改进的正则表达式或算法来更快地替换那些尾随逗号。
Here is where i start from ( the string with the trailing commas )
答案 0 :(得分:1)
您可以通过删除捕获组来简化正则表达式,通过前瞻替换后者的目的:
var regex = new Regex(@",\s*(?=\}|\])");
return regex.Replace(jsonCode, " ");
答案 1 :(得分:0)
您不需要第一个表达式.*?
,您可以转换备选方案
进入一个角色类。这是关于你能做的最好的事情。
var regex = new Regex(@",[^\S\r\n]*([}\]])");
return regex.Replace(jsonCode, " $1");