RE エラー: 繰り返し演算子のオペランドが無効です

RE エラー: 繰り返し演算子のオペランドが無効です

このエラーが発生しています

RE エラー: 繰り返し演算子のオペランドが無効です

FreeBSD sed では csh を使用します。

コマンドは次のとおりです:

sed -rn 's/.*?VIEW ([^\s]+?) (AS .*?)\s([^\s]+?)\s([^\s]+?)/DROP VIEW \1;\nCREATE VIEW \1 \2;/p'

私は見たこの質問しかし、s は 1 つもありません*+が、いくつかあります*?。これは非貪欲を意味するはずです。何が間違っているのでしょうか?

答え1

質問のコメントですでに言及されていますが、回答をより明確にするために:

非貪欲マッチングは、標準または拡張正規表現モードのいずれを使用しても、sed では使用できません。

一致を終了する文字がわかっている場合は、次のテクニックを使用できます。https://0x2a.at/blog/2008/07/sed--非グリーディマッチング/

貪欲マッチング:

$ echo "<b>foo</b>bar" | sed 's/<.*>//g'
bar

非貪欲マッチング:

$ echo "<b>foo</b>bar" | sed 's/<[^>]*>//g'
foobar

関連情報