2016-03-30 20 views
-1

Ich versuche, den Wert bestimmter Muster aus dem Text zu extrahieren.Regex Match Wert in Typescript

Beispieltext:

Test: [] 
subtests: [a] 

Ich mag die Linie subtests: [a] oder genau zu extrahieren, was die Daten in [] von Subtests. Wenn ich versuche, die Regex zu finden, gibt es einen falschen Wert. Nicht sicher, was ich hier falsch mache.

https://jsfiddle.net/k8e9hu0e/2/

Kann mir jemand helfen?

+0

Verwenden '/ g' globaler Modifikator und eine Schleife durch alle Spiele. Wenn Sie den Inhalt von '[...]' benötigen, benötigen Sie eine Erfassungsgruppe. Überprüfen Sie [diese Geige] (https://jsfiddle.net/h8bf0ox5/). –

+0

@ WiktorStribiżew, können Sie bitte den Code ändern und die Lösung für die Gemeinschaft zeigen? Ich bin neu in Regex, es wird für andere wie mich hilfreich sein – Reddy

+1

Überprüfen Sie https://jsfiddle.net/h8bf0ox5/. Oder wenn Sie nur den Übereinstimmungswert anzeigen müssen, verwenden Sie '.exec (string) [0]' - https://jsfiddle.net/u1paL0y2/ –

Antwort

1

Hier ist ein Working Fiddle. So war die einzige Änderung, die captures dh zu entfernen: Ändern (.*) zu .*

Erklären Sie Ihr Problem ..

Diese Regex ^subtests: (.*) hat Aufnahmen drin. Und wenn Sie die Übereinstimmungen für diese Regex finden, erhalten Sie eine Menge aller Regex-Übereinstimmungen und dann alle Captures. So ist der erste Satz subtests: [] und dann der Satz von Aufnahmen, die [] ist. Daher war Ihre Ausgabe subtests: [],[] (beachten Sie die ,).

+0

danke für die Klärung :) – Reddy

+0

@Reddy wenn dies die richtige Lösung war, dann könnten Sie es als Antwort markieren. –

+1

Vielleicht eine richtige Lösung, aber die Erklärung ist nicht korrekt. * gibt Ihnen eine Menge aller Regex-Übereinstimmungen * - 'RegExp # exec' liefert kein Array aller Übereinstimmungen, Sie müssen eine Schleife verwenden, um alle * Übereinstimmungen * zu erhalten. –

1

Hier ist eine Live-Demo. Gegabelte und modifizierte von Ihrer Quelle. https://jsfiddle.net/soonsuweb/aj38617b/

var data = `blur blur subtests: [] blur\nblur`; 
var regex = /subtests: \[.*\]/; 
var test = regex.exec(data); 
alert("Op: " + test);