2016-07-20 11 views
0

Der Ausdruck, den ich verwendet habe, funktioniert in RegExr, aber wenn ich meinen Code im Knoten ausführen, gibt es nur einen Teil anstelle eines Arrays von Teiltönen zurück.So finden Sie alle Registerteile in einer Datei mit Regex

Meine Knoten Datei

'use strict'; 
var fs = require('fs'); 

module.exports = function() { 
    fs.readFile('text.txt', 'UTF8', function(err, contents) { 
    if(err) throw err; 

    var re = /({{> (\w*)}})/g; 
    var myArray = re.exec(contents); 

    console.log(myArray); 
    }); 
}(); 

Text.txt

{{> test}} 

{{> test2}} 

{{> test3}} 

ist mein zurückgegebene Ergebnis nur {{> test}}

Antwort

1

Wenn Sie .exec() Sie es in einer Schleife aufrufen müssen, bis sie null zurück um alle übereinstimmenden Ergebnisse zu erhalten. Um einfach die Übereinstimmungen in einem Array zu erhalten, verwenden Sie stattdessen .match für den Inhalt:

+0

Vielen Dank. Das hat perfekt funktioniert. – MattClaff

+0

Was wäre, wenn Sie möchten, dass Ihr Teil {{> test-1}} ist? Der obige Ausdruck funktioniert nicht für diesen Senario. – MattClaff

+0

Das ist eine andere Frage, aber Sie müssen nur das '(\ w *)' in etwas ändern, das zu Ihren Namen passt ([^}] +) 'zum Beispiel, wenn Sie alles anpassen wollen. – vincent

Verwandte Themen