我想从文件中获取电话号码。我知道数字有不同的形式,我可以处理一个,但不知道如何获得统一的正则表达式。例如
xxx-xxx-xxxx
(xxx)xxx-xxxx
xxx xxx xxxx
xxxxxxxxxx
我只能同时处理 1、2 和 4
grep '[0-9]\{3\}[ -]\?[0-9]\{3\}[ -]\?[0-9]\{4\}' file
是否有任何一种正则表达式可以处理所有这四种形式?
最佳答案
grep '\(([0-9]\{3\})\|[0-9]\{3\}\)[ -]\?[0-9]\{3\}[ -]\?[0-9]\{4\}' file
解释:
([0-9]\{3\})
括号内的三位数字
\|
或
[0-9]\{3\}
三位数字不在括号内
...使用分组括号 - \(...\)
- 围绕交替,因此无论哪个替代匹配,正则表达式的其余部分都表现相同。
关于regex - grep 与正则表达式的电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39730238/