我需要一个正则表达式来匹配 1-434-555-1212
或 434-555-1212
或 (434)555-1212
或 555-1212
格式的电话号码。
除了以 1 开头的表格外,我已经得到了所有这些。
grep -o '\([0-9]\{3\}\-[0-9]\{3\}\-[0-9]\{4\}\)\|\(([0-9]\{3\})[0-9]\{3\}\-[0-9]\{4\}\)\|\([0-9]\{3\}\-[0-9]\{4\}\)\|\(1-[0-9]\{3\}\-[0-9]\{4\}\)'
最佳答案
简化了这个
grep -o '
\([0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}\)\|
\(([0-9]\{3\})[0-9]\{3\}-[0-9]\{4\}\)\|
\(\(1-\)?[0-9]\{3\}-[0-9]\{4\}\)' phones.txt
1-434-555-1212
434-555-1212
(434)555-1212
555-1212
将最后一个条件更改为\(1-\)? 这 '?'用于可选字符。您现在只需三个条件步骤即可完成此操作。我删除了第三个,它仍然有效。还删除了连字符的转义序列。
关于linux - 匹配电话号码的 grep 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32876818/