ich diese Zeichenfolge haben (man beachte die mehrzeiligen Syntax):Warum passt diese Regex auch Wörter innerhalb einer nicht einfangenden Gruppe?
var str = ` Number One: Get this
Number Two: And this`;
Und ich möchte einen regulären Ausdruck, die (mit match
) zurückgibt:
[str, 'Get this', 'And this']
Also habe ich versucht str.match(/Number (?:One|Two): (.*)/g);
, aber das ist zurück:
["Number One: Get this", "Number Two: And this"]
Vor jedem "Number"
Wort können Leerstellen/Zeilenumbrüche vorhanden sein.
Warum gibt es nicht nur zurück, was innerhalb der einfangenden Gruppe ist? Mache ich etwas falsch? Und wie kann ich das gewünschte Ergebnis erzielen?
In Ordnung, danke. Weißt du, ob das bei allen Regex-Engines gleich ist? Ich meine, wenn das daran liegt, wie Regex im Allgemeinen funktioniert. – Jacob
Ich denke, ich mache das (natürlich, 'arr' deklarierend):' str.split ('\ n') forEach (x => arr.push (x.match (/ Number (?: One | Two): (. *) /) [1])); ', Was denkst du? – Jacob
Ah, habe das Update nicht gesehen, das funktioniert auch. Und die Lösung von @ guest271314 funktioniert ebenfalls, aber Sie haben erklärt, warum das nicht der Fall war, und das ist nett. Vielen Dank. Ich bin nicht wirklich an der ganzen Saite interessiert, ich habe es nur so in der Frage geschrieben, weil ich dachte, dass Match immer mit einfangenden Gruppen arbeitet. – Jacob