regex 不匹配)

wecizke3  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(132)

我尝试grep(递归)对一些文件/文件夹,但我的正则表达式在grep期间输出错误。
语法:

grep -a -r "^[a-zA-Z0-9_.+]+@[a-zA-Z0-9]+\.[a-zA-Z0-9.]+:+[a-zA-Z0-9\\\!|\[\]~<>{#}?\$%\^\&*\)\(+=._\-]+$" a.txt > b.txt

错误消息:

grep: Unmatched ) or \)

我试着通过切换一些")"来弄清楚它,但无济于事。任何帮助都很感激,谢谢:)

ee7vknir

ee7vknir1#

这是因为\是转义字符,所以你需要额外的\来转义\本身。
所以如果你想在正则表达式中用\转义(,你需要写\\(

ff29svar

ff29svar2#

在基本的正则表达式中,元字符?,+,{,|、(、和)失去其特殊意义;而不是使用反斜线版本\?、+、{、|、\(和\)。
传统的egrep不支持{元字符,而一些egrep实现支持(,所以可移植脚本应该避免在grep -E模式中使用(,并且应该使用[(]来匹配文字(。

相关问题