Regex 混淆何时(不)使用反斜杠'\';逃走
我对什么时候应该使用“\”感到非常困惑 考虑以下例子: (一) 它匹配以bz、gz或zip开头的结果 (二) 输出:(555)123-4567Regex 混淆何时(不)使用反斜杠'\';逃走,regex,bash,shell,command-line,grep,Regex,Bash,Shell,Command Line,Grep,我对什么时候应该使用“\”感到非常困惑 考虑以下例子: (一) 它匹配以bz、gz或zip开头的结果 (二) 输出:(555)123-4567 对于示例(1),为什么不要求用“\”来转义括号() 对于示例(2),为什么转义()需要“\”呢 我正在使用Ubuntu发行版。您的每个示例中的括号表示不同的内容 在第一个示例中,括号是分组的,与文件名不匹配。因此,您可以找到以bz开头的文件,而不是(bz) 在第二个示例中,括号是文字,实际出现在您匹配的电话号码中。每个示例中的括号表示不同的含义 在第一
我正在使用Ubuntu发行版。您的每个示例中的括号表示不同的内容 在第一个示例中,括号是分组的,与文件名不匹配。因此,您可以找到以
bz
开头的文件,而不是(bz
)
在第二个示例中,括号是文字,实际出现在您匹配的电话号码中。每个示例中的括号表示不同的含义 在第一个示例中,括号是分组的,与文件名不匹配。因此,您可以找到以
bz
开头的文件,而不是(bz
)
在您的第二个示例中,括号是文字,实际上出现在您匹配的电话号码中。请注意,grep的
-E
选项实际上更改了需要转义的内容—没有它,(…)
匹配文字参数和\(…\)
是一个组,但是-E
的含义是相反的。请注意,grep的-E
选项实际上改变了需要转义的内容——没有它,(…)
匹配文本参数,\(…)
是一个组,但是-E
的含义是相反的。
$ grep -Eh '^(bz|gz|zip)' filenames.txt
$ echo "(555) 123-4567" | grep -E '^\(?[0-9][0-9][0-9]\)? [0-9] [0-9][0-9]$'