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,但我確實有一些*?s,但這應該意味著非貪婪。我究竟做錯了什麼?

答案1

在對該問題的評論中已經提到了這一點,但為了使答案更明確:

無論使用標準正規表示式或擴展正規表示式模式,非貪婪匹配在 sed 中均不可用。

如果您知道應該終止匹配的字符,則可以使用以下技術,如下所示:https://0x2a.at/blog/2008/07/sed--non-greedy-matching/

貪心匹配:

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

非貪婪匹配:

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

相關內容