分析

难度 易

来源

https://leetcode.com/problems/valid-phone-numbers/

题目

Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bash script to print all valid phone numbers.

You may assume that a valid phone number must appear in one of the following two formats: (xxx) xxx-xxxx or xxx-xxx-xxxx. (x means a digit)

You may also assume each line in the text file must not contain leading or trailing white spaces.

Example:

Assume that file.txt has the following content:

987-123-4567
123 456 7890
(123) 456-7890

Your script should output the following valid phone numbers:

987-123-4567
(123) 456-7890
解答

https://leetcode.com/problems/valid-phone-numbers/discuss/55478/Grep-e-solution-with-detailed-explanation-good-for-those-new-to-regex

 grep -e '\(^[0-9]\{3\}-[0-9]\{3\}-[0-9]\{4\}$\)' -e '\(^([0-9]\{3\})[ ]\{1\}[0-9]\{3\}-\([0-9]\{4\}\)$\)'  file.txt
  1. In Bash, we use \ to escape next one trailing character;
  2. ^ is used to denote the beginning of a line
  3. $ is used to denote the end of a line
  4. {M} is used to denote to match exactly M times of the previous occurence/regex
  5. (...) is used to group pattern/regex together

Back to this problem: it requires us to match two patterns, for better readability, I used -e and separate the two patterns into two regexes, the first one matches this case: xxx-xxx-xxxx and the second one matches this case: (xxx) xxx-xxxx

加上-P(使用Perl的正则引擎)即可过滤出目标数据
 grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt
注意上方的空格 
 grep '^(\d{3}-|\(\d{3}\)[ ]{1})\d{3}-\d{4}$'  file.txt
这里使用[ ]{1}表示一个空格

最新文章

  1. J2EE web项目中解决所有路径问题
  2. java接口的嵌套
  3. IT人学习方法论(一):学习方向
  4. Qt 按钮事件不响应
  5. TCP/IP协议 三次握手与四次挥手【转】
  6. bootstrap01登录小例子
  7. ACdream 1135(MST-最小生成树边上2个值,维护第一个最小的前提下让还有一个最小)
  8. java8之lambda表达式入门
  9. CS Round#53 C Histogram Partition
  10. JAVA数组练习
  11. css学习_css补充知识
  12. python学习(十一)
  13. FPGA-VHDL课堂学习笔记*01
  14. 动态编程(Dynamic Programming)
  15. 【转】Java finally语句到底是在return之前还是之后执行?
  16. 测试同学必备抓包工具--charles之mock数据
  17. 关于小程序登录时获取openId和unionId走过的坑
  18. Windows 计划任务 Task Schedule 怎么 运行 .bat文件
  19. 【Postgresql】set up
  20. Python使用Threading模块创建线程

热门文章

  1. 缓冲区溢出基础实践(一)——shellcode 与 ret2libc
  2. Golang包管理工具glide简介
  3. python获取网站http://www.weather.com.cn 城市 8-15天天气
  4. VC++中出现stack overflow错误时修改VC++的默认堆栈大小
  5. web常用的正则表达式
  6. 关于jquery的click()方法
  7. highcharts柱状图实现legend和数据列一一对应效果
  8. html中radio、checkbox选中状态研究
  9. 手把手教你写基于C++ Winsock的图片下载的网络爬虫
  10. iOS 基础函数解析 - Foundation Functions Reference