我在grep命令中编写了以下regex,以便在包含java文件的目录中查找SQLException的所有catch语句。
catchs{0,}(s{0,}SQLException
它给出了"grep:Unmatch(or()"错误。此正则表达式在RegExr.com上运行良好。此正则函数有什么问题?
要使用s
,需要指定-P
选项(允许Perl正则表达式):
grep -P 'catchs{0,}(s{0,}SQLException'
顺便说一句,您可以使用*
而不是{0,}
。
grep
默认使用BRE
,(
成为捕获组的开始(未捕获的(
是字面意义上的)。
您可以将此grep
与扩展正则表达式模式-E
:一起使用
grep -E 'catch[[:blank:]]*([[:blank:]]*SQLException' file.log