Ich erhalte diesen Fehler
RE-Fehler: Wiederholungsoperator-Operand ungültig
Unter FreeBSD sed mit csh.
Der Befehl lautet:
sed -rn 's/.*?VIEW ([^\s]+?) (AS .*?)\s([^\s]+?)\s([^\s]+?)/DROP VIEW \1;\nCREATE VIEW \1 \2;/p'
Ich habe gesehendiese Frageaber ich habe kein *+
s, aber ich habe einige *?
s, aber das soll nicht gierig bedeuten. Was mache ich falsch?
Antwort1
Es wurde bereits in den Kommentaren zur Frage erwähnt, aber um die Antwort deutlicher zu machen:
In sed ist die nicht gierige Übereinstimmung weder im Standard- noch im erweiterten Regex-Modus verfügbar.
Wenn Sie das Zeichen kennen, das die Übereinstimmung beenden soll, können Sie die folgende Technik verwenden, die Sie hier finden:https://0x2a.at/blog/2008/07/sed--non-greedy-matching/
Greedy-Matching:
$ echo "<b>foo</b>bar" | sed 's/<.*>//g'
bar
Nicht gieriges Matching:
$ echo "<b>foo</b>bar" | sed 's/<[^>]*>//g'
foobar