[英].NET regex timing out in case of no match
我有一个具有以下格式的大字符串:
{"_index":"2","_t":"g","_id":"3","_source":{"Id":3,"C":3,"PortfolioIdList":[1,3,4],"TISList":[1,2]}
,"sort":[3000]}
PortfolioIdList可以为空[]
也可以包含数字,如上所示。 这个想法是当且仅当它包含数字即不为空时,才将另一个数字插入到PortfolioIdList中。 我为此写了一个正则表达式,它正在超时。 正则表达式为:
const string STR_REGEX = @"(\{"")(_)(index"":)(.*?)(""_id"":"")([0-9]*)("")(.*?)(\{.*?""PortfolioIdList"":\[(?!\]))([^\]]*)(\][^\}]*)((.|\r|\n|\r\n|[^\}])*\},)";
var myRegex = new Regex(STR_REGEX, RegexOptions.None);
var strTargetString = File.ReadAllText(@"raw1.txt");
const string STR_REPLACE = @"${1}${3}${5}${6}${7}${8},""_parent"":""${6}""}}\r\n${10}${11},2344${12}\r\n";
var newStr = myRegex.Replace(strTargetString, STR_REPLACE);
如果列表不为空,则正则表达式可以正常工作,但是如果列表为空,则它会超时,例如"PortfolioIdList":[]
。 我真的不确定我的正则表达式有什么问题,我们将不胜感激任何帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.