我试图通过正则表达式从text / js文件中提取某个js对象。
整个文件包含很多代码,但我只对获取名为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={};
提前致谢!
答案 0 :(得分:0)
如果您的代码更复杂或更改,我会重新使用诸如Jint之类的JS解析器。但是对于你的例子,这应该有效:
var r = new Regex(@"var cfg = (?<Content>\{[^;]*});");
var content = r.Match(text).Groups["Content"];
注意:如果cfg文字包含;
,则正则表达式将无法按预期工作。