2017-02-17 2 views
1

Was ich tun möchte, ist eine Zeichenfolge in ein Array von mehreren zusammenhängenden Teilzeichenfolgen aufgeteilt, abwechselnd zwischen Übereinstimmungen und Nicht-Übereinstimmungen eines bestimmten regulären Ausdrucks.Get Array von beiden Übereinstimmungen und Nicht-Übereinstimmungen

So:

[nonmatch, match, nonmatch, match...] 

Zum Beispiel mit dem rechten regex (der eigentliche Ausdruck nicht wichtig, hier zu sein),

"I [went to the doctor] today to [eat some] food" 

werden könnte:

["I ", "[went to the doctor]", " today to ", "[eat some]", " food"] 

Ich brauche um das zu tun, weil ich einige Teile einer Zeichenkette vorübergehend herausnehmen muss, etwas an den Rest der Zeichenkette tun und dann Fügen Sie die vorherigen Teile wieder dorthin ein, wo sie waren, um die ganze Saite wieder zusammenzufügen (indem Sie einfach das gesamte Array zu einer Saite zusammenfügen).

Alles, was ich von der Suche finden Menschen, die wollen entweder einen Teil der Zeichenfolge loszuwerden (zB die [] in dem obigen Beispiel) oder einige nicht-Matches teilnehmen und passt zusammen, wie:

["I ", "[went to the doctor] today to ", "[eat some] food"] 
+1

Warum glaubst du nicht, dass die verwendete Regex nicht wichtig war? Ohne es scheint dir die Frage unklar zu sein. –

+0

Das ist noch vage !!! –

+0

Die Regex ist eine Regex, die Gruppen von Zeichen zwischen eckigen Klammern auswählt. Ich möchte ein Array, bestehend aus den Übereinstimmungen und Nicht-Übereinstimmungen für diese Regex, in der richtigen Reihenfolge erstellen. – Kookas

Antwort

6

Sie können split dafür verwenden und einen regulären Ausdruck übergeben, der eine Erfassungsgruppe (dh Klammern) enthält. Dann wird diese Abgrenzung Teil auch in der resultierenden Array aufgenommen werden:

var s = "I [went to the doctor] today to [eat some] food" 
 
var result = s.split(/(\[.*?\])/); 
 
console.log(result);

Die Spiele werden immer an den ungeraden Indizes des resultierenden Array sein.

+0

Ich denke, dass es nicht genau das ist, was OPs erwartet ... –

+0

Ich denke, für die gegebene Beschreibung ist das mehr als eine richtige Antwort – smnbbrv

+0

Es ist genau das, was ich posten würde. – Barmar

Verwandte Themen