正则表达式不匹配空字符

时间:2014-08-21 02:10:05

标签: regex linux grep

我有这些文字grep正在搜索:

629-732-5225
(224) 662-6288
(772) 732-6333
(743)223-6992
104-692-7385

这是我用来匹配以上所有内容的命令:

grep "(\?[0-9]\{3\})\?[ -][0-9]\{3\}-[0-9]\{4}" *.txt

这是输出:

h1.txt: 629-732-5225
h2.txt: (224) 662-6288
h3.txt: (772) 732-6333
h5.txt: 104-692-7385

h4.txt的文字不符。不同之处在于,在右括号后没有空格。我认为[ -]会涵盖那个。为什么不起作用?

1 个答案:

答案 0 :(得分:2)

您要匹配空格或连字符。你需要一个空格或一个连字符,或者什么也不需要。

使用[ -]?使匹配成为可选项。