Grep 中的正则表达式错误"Repetition not preceded by valid expression"



>我有一个包含字符串的文件,例如{?ENV1}{?ENV2}

我想使用 grep 来查找这些

grep -o '{?S+?}' myfile

但我得到grep: bad regex '{?S+?}': Repetition not preceded by valid expression

在正则表达式101网站中,正则表达式工作。grep 的工作方式是否不同?

POSIXgrep默认正则表达式引擎是 POSIX BRE。您不应该转义大括号或使用S。前者会导致特殊含义(您看到的错误原因(,后者不受支持。尝试:

grep -o '{?[^{}]*}' file

或者为了保持S目的:

grep -o '{?[^[:space:]]*}' file

甚至要解决+量词:

grep -o '{?[^[:space:]][^[:space:]]*}' file

对基于 Perl 的正则表达式使用-P标志(尽管仍处于实验阶段(

grep -oP '{?S*}' myfile

尝试使用更新的正则表达式执行此操作。您可以使用*

grep -o '{?S*}' myfile

最新更新