2016-08-11 3 views
0

Bitte helfen Sie mir, einen bestimmten Text enthaltenen Block aus dieser Datei zu finden. Ich lese Kontext mit Knoten js fs.Regulärer Ausdruck, um genau denselben Block zu finden

<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> 

Code:

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

oben Code funktioniert gut, aber es wird alle vHost Blöcke entsprechen. Ich muss nur finden vhost Block, der enthalten ist "www.site2.com"

Antwort

1

Nach einiger Überlegung bin ich zu der Schlussfolgerung gekommen, dass Regex nicht den Senf schneiden wird. Ich würde empfehlen, node-apacheconf zu verwenden.

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

Ja ist es, kann ich nicht nur die Website2 als Text definieren – Dhanan

+0

Als Text? Sie müssten es entkommen, wenn Sie es in regulären Ausdruck setzen – FrankerZ

+0

Ja suche ich etwas ähnlich wie //gm – Dhanan

Verwandte Themen