需要帮助通过正则表达式从文本文件中提取字符串

时间:2017-11-24 16:11:49

标签: javascript c# json

我试图通过正则表达式从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={};

一样

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您的代码更复杂或更改,我会重新使用诸如Jint之类的JS解析器。但是对于你的例子,这应该有效:

var r = new Regex(@"var cfg = (?<Content>\{[^;]*});");
var content = r.Match(text).Groups["Content"];

注意:如果cfg文字包含;,则正则表达式将无法按预期工作。