regex - grep 与正则表达式的电话号码

标签 regex grep

我想从文件中获取电话号码。我知道数字有不同的形式,我可以处理一个,但不知道如何获得统一的正则表达式。例如

  1. xxx-xxx-xxxx

  2. (xxx)xxx-xxxx

  3. xxx xxx xxxx

  4. 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/

相关文章:

mysql - 如何过滤mysql.log整个查询?

linux - 如何在多行 linux 上进行精确匹配

linux - 为什么 grep 命令在第二次执行时花费的时间更少?

.net - 如何使正则表达式操作超时以防止在 .NET 4.5 中挂起?

java - 正则表达式用于分割每个字符,但将数字和小数保留在一起

bash - Unix 将 grep 选项添加到 Bash 脚本

linux - 如何使用curl和printf打印ftp文件信息

java - java中括号内单词的正则表达式

java - 如果关注性能,Java 中字符串模式匹配的最佳方法

php - 通过 PHP 为搜索创建索引