为什么我不能匹配字符串
"1234567-1234567890"
使用给定的正则表达式
\d{7}-\d{10}
来自shell的egrep
,如下所示:
egrep \d{7}-\d{10} file
答案 0 :(得分:64)
egrep
无法识别数字字符类的\d
简写,因此您需要使用例如[0-9]
。
此外,虽然在这种情况下并不是绝对必要,但引用正则表达式来防止shell的误解是一种好习惯。因此,这样的事情应该有效:
egrep '[0-9]{7}-[0-9]{10}' file
grep
, ed
, sed
, egrep
, awk
, emacs
grep
与egrep
与其他正则表达式之间的差异答案 1 :(得分:22)
为了完整性:
事实上,Egrep确实支持角色类。课程是:
示例(注意双括号):
egrep '[[:digit:]]{7}-[[:digit:]]{10}' file
答案 2 :(得分:16)
如果你通过grep" perl regex"你可以使用\d
选项,例如:
grep -P "\d{9}"
答案 3 :(得分:11)
使用[0-9]代替\ d。 egrep不知道\ d。
答案 4 :(得分:-3)
试试这个:
egrep '(\d{7}-\d{10})' file