2017-11-24 11 views
-2

私はregexを使ってtext/jsファイルから特定のjsオブジェクトを抽出しようとしています。 ファイル全体には多くのコードが含まれていますが、私はcfgという変数を取得することにのみ関心があります。正規表現を使ってテキストファイルから文字列を抽出するのに助けが必要

ファイルには、次のようになります。

function A(){ 

} 

var cfg = { 
    setting:1, 
    setting2: 5, 
    setting3:[], 
    setting4:{ 
     setting5:"test" 
    } 
}; 

function B(){ 

} 

誰も私はこのために正規表現を把握するのに役立つだろうか?私は正規表現でひどいですし、私は利用可能なソリューションをたくさん試しましたが、それらのいくつかはC#では有効ではないようです。 は今の私の解決策を使用している:明らかにcfgオブジェクトのさまざまな書物をカバーしていない

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]); 
} 

を。 Like var cfg={};

ありがとうございます!

+5

これにはregexではなく実際のパーサーを代わりに使用してください(例:https://stackoverflow.com/questions/14355910/javascript-parser-and-analyzer-in-c-sharp-net- 4-5 –

答えて

0

コードが複雑または変更される場合は、JintなどのJSパーサーを使用することをお勧めします。しかし、あなたの例については、この作業をする必要があります:

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

:リテラルCFGが期待通りに正規表現が動作しません;含まれている場合。

関連する問題