Problem: 193. 有效电话号码

用正则表达式来匹配电话号码

Code

# Read from the file file.txt and output all valid phone numbers to stdout.
grep -P '^(\(\d{3}\) \d{3}-\d{4}|\d{3}-\d{3}-\d{4})$' file.txt

解决办法

要解决这个问题,你可以使用一个简单的 Bash 脚本,结合 grep 命令和正则表达式来筛选出有效的电话号码。正则表达式是用于匹配特定模式的字符串,非常适合于这类文本筛选任务。

下面是一个示例脚本,可以输出满足条件的电话号码:

grep -P '^(\(\d{3}\) \d{3}-\d{4}|\d{3}-\d{3}-\d{4})$' file.txt

这个命令的解释如下:

  • grep: 是一种强大的文本搜索工具。
  • -P: 表示使用 Perl 兼容的正则表达式。
  • ^...$: 这个正则表达式匹配一整行,^ 表示行的开始,$ 表示行的结束。
  • \(\d{3}\) \d{3}-\d{4}: 匹配格式为 (xxx) xxx-xxxx 的电话号码。

    • \(\) 匹配左右括号。
    • \d{3} 匹配三个数字。
    • xxx-xxxx 匹配剩余的电话号码格式。
  • |: 是逻辑“或”操作符,用于匹配两种不同的格式。
  • \d{3}-\d{3}-\d{4}: 匹配格式为 xxx-xxx-xxxx 的电话号码。

这个脚本会从 file.txt 中读取每一行,并输出所有符合上述两种格式的电话号码。