Javascript 需要通过正则表达式从文本文件中提取字符串的帮助吗
我试图通过regex从text/js文件中提取某个js对象。 整个文件包含大量代码,但我只对获取名为Javascript 需要通过正则表达式从文本文件中提取字符串的帮助吗,javascript,c#,json,Javascript,C#,Json,我试图通过regex从text/js文件中提取某个js对象。 整个文件包含大量代码,但我只对获取名为cfg的变量感兴趣 该文件可能如下所示: function A(){ } var cfg = { setting:1, setting2: 5, setting3:[], setting4:{ setting5:"test" } }; function B(){ } 有人能帮我找出这个的正则表达式吗?我在正则表达式方面很糟糕,我尝试过很多可用的
cfg
的变量感兴趣
该文件可能如下所示:
function A(){
}
var cfg = {
setting:1,
setting2: 5,
setting3:[],
setting4:{
setting5:"test"
}
};
function B(){
}
有人能帮我找出这个的正则表达式吗?我在正则表达式方面很糟糕,我尝试过很多可用的解决方案,但其中一些似乎在C#中无效。
目前,我的解决方案是使用:
string[] split = input.Split(new string[] { "var cfg = " }, StringSplitOptions.None);
if(split.Length > 2)
{
string[] split2 = split[1].Split(new string[] { ";" }, StringSplitOptions.None);
return JObject.Parse(split2[0]);
}
这显然不包括cfg
对象的不同书写。像var cfg={}代码>
提前谢谢 我建议您使用JS解析器,例如,如果您的代码更复杂或将发生更改。但对于您的示例,这应该是可行的:
var r = new Regex(@"var cfg = (?<Content>\{[^;]*});");
var content = r.Match(text).Groups["Content"];
var r=newregex(@“var cfg=(?\{[^;]*});”;
var content=r.Match(text).Groups[“content”];
注意:如果cfg文本包含代码>正则表达式将无法按预期工作。不要使用正则表达式,而是使用真正的解析器,如下所述,例如: