Regex-match, bis die erste Instanz von bestimmten Zeichen
Ich bin versucht, eine url, bis ein spezielles Zeichen jedoch die regex, die ich verwende, ist Spiel die Letzte Instanz, wenn ich es brauche zu stoppen, nachdem die erste Instanz. Was mache ich falsch?!
.+?(?=\")
Übereinstimmen, alles bis zum ersten "
Aber mein Ergebnis ist unten:
InformationsquelleAutor NeverPhased | 2016-12-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzugefügt Sie das
"
in die verbrauchenden Teil des Musters, und entfernen Sie es.Sehen demo. Hier
.+?
entspricht der 1+ chars, so wenig wie möglich, bis zum ersten"
ohne es aus dem Spiel, weil die "" ist ein Teil der lookahead (a null-Breite assertion).Besten ist die Verwendung eines negierte Zeichenklasse:
Sehen eine weitere demo. Hier
^[^"]+
Spiele 1+ chars andere als"
(siehe[^"]+
) aus dem Anfang einer Zeichenfolge (^
).grep -Eo '^[^"]+'
sollten extrahieren des strings aus dem Anfang der Zeile zu der ersten"
ohne es aus dem Spiel. Siehe demo.InformationsquelleAutor Wiktor Stribiżew