2016-07-29 14 views
0

私はhttps://github.com/joyent/node-strsplitを使ってファイルから抽出したテキストを分割しています。二重中括弧の間でデータを抽出する必要があります。以下は、ファイル内のいくつかのサンプルテキストです。Node.jsの正規表現で配列を分割する

私は名前の下に{{名}} {現在の財産所有者の{アドレス||アドレス}}に住んでいて、私のID(NIC)が{{NIC ||国民識別番号}}になります)

ここでは、ダブル開閉の中括弧内のテキストを抽出します。たとえば、究極の配列は[「アドレス||現在の財産所有者のアドレス」、「名前」、「NIC ||国民識別番号」]このため

、のようにする必要があり、私は次のように使用してみました正規表現パターン

/{{(.*?)}}/ 
/{{([^}]*)}}/ 
/\{{([^}]+)\}}/ 

以下は私のコードです。

var pattern = '/{{(.*?)}}/'; 
var arr=strsplit(sample_text, pattern); 

解決策を完了するために手伝ってください。乾杯!

更新日:

var results = [], re = /{{([^}]+)}}/g, text; 

    while(item = re.exec(text)) { 
     results.push(item[1]); 
    } 
+0

はなぜ/{{(.* '使用しません)}}?/g.exec(sample_text) 'を実行し、ループ内のグループ1の値をすべて取得しますか? http://stackoverflow.com/questions/432493/how-do-you-access-the-matched-groups-in-a-javascript-regular-expressionを参照してください。 –

答えて

1

あなたはmatch()でそれを行うとブラケット取り除くことができます:

var str = "I am living in {{address||address of current property owner}} under the name {{name}} and my id (nic) will be {{nic||National Identity Number}})"; 
 
var result = str.match(/{{.*?}}/g).map(function(x){return x.slice(2,-2)}); 
 
console.log(result)