leetcode-193 Valid Phone Numbers

来源:互联网 发布:网咖软件 编辑:程序博客网 时间:2024/05/16 15:54

两种格式的电话号码,可以使用条件分支:或者(|)。还有一点要注意的就是必须在每个正则表达式的首尾加^和$,不然这样的行也会被选出来的

0(001) 345-0000

(001) 345-0000111

正确的答案:

egrep '^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$|^[0-9]{3}-[0-9]{3}-[0-9]{4}$' file.txt

更好的答案:

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

为什么用egrep '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt就不能AC了?

但是egrep '^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$' file.txt 就可以AC

原因可能是egrep(扩展的正则表达式也不支持\d,只支持[0-9]),但是perl(-P)正则表达式就支持\d


参考:

Using grep:

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

Using sed:

sed -n -e '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/p' file.txt

Using awk:

awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-[0-9]{4}$/' file.txt

1 0
原创粉丝点击