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

相关内容