2016-08-11 4 views
0

このファイルから特定のテキストを含むブロックを見つけてください。 私はノードjs fsを使ってコンテキストを読んでいます。正確に同じブロックに一致する正規表現

<VirtualHost *:80> 
DocumentRoot /home/site1 
ServerName www.site1.com 
</VirtualHost> 
<VirtualHost *:80> 
DocumentRoot /home/site2 
ServerName www.site2.com 
</VirtualHost> 
<VirtualHost *:80> 
DocumentRoot /home/site3 
ServerName www.site3.com 
</VirtualHost> 

コード:コードの上

fileContext.toString().split("\n"); 
var matched = fileContext.toString().replace(/<VirtualHost[\s\S]*?<\/VirtualHost>/gm,"--matched--"); 

が正常に動作しているが、それはすべてのバーチャルホストブロックと一致します。 "www.site2.com"を含むvhostブロックを探す必要があります

答えて

1

いくつかの審議の後、私は正規表現がマスタードをカットするつもりはないと結論づけました。 node-apacheconfを使用することをおすすめします。

var name = "www.site2.com"; 

apacheconf('/etc/apache2/httpd.conf', function(err, config, parser) { 
    if (err) throw err 

    console.log(config.VirtualHost.filter(function(vh) { 
    return vh.ServerName == name; 
    })); 
}); 
+0

はいいいえ、サイト2だけをテキストとして定義します – Dhanan

+0

本文はありますか?あなたが正規表現に入れているのなら、あなたはそれをエスケープしなければならないでしょう。 – FrankerZ

+0

はい//gm – Dhanan

関連する問題