leetcode: Valid Phone Numbers 通过不了。求解

2015-07-06 22:47:35 +08:00
 marginleft
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.

For 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

-----------
我的答案是:
grep -E '\d\d\d-\d\d\d-\d\d\d\d|\(\d\d\d\)\s*\d\d\d-\d\d\d\d' file.txt

系统提示:
Submission Result: Wrong Answer
Input: 123-456-7891
Output:
Expected: 123-456-7891

但是在我的本机上,明明可以grep出来啊。
百思不得其解。求指导。
2425 次点击
所在节点    问与答
5 条回复
msg7086
2015-07-06 23:01:11 +08:00
帮你在我本机测了一下,返回的是空的。
msg7086
2015-07-06 23:02:37 +08:00
顺便我把 grep -E 改成 grep -P 以后就能拿到结果了。
18000rpm
2015-07-06 23:13:06 +08:00
又是正则的版本问题
osx -E 能出来,ubuntu 下 -E 不行

grep's default mode is (iirc) POSIX regex, and \d is pcre.
http://stackoverflow.com/a/6901221/1019566
yangqi
2015-07-06 23:42:45 +08:00
egrep '^(\([0-9]{3}\)\s|[0-9]{3}-)[0-9]{3}-[0-9]{4}$' file.txt
marginleft
2015-07-07 07:01:16 +08:00
@msg7086
@18000rpm
@yangqi
非常感谢!了解了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/203796

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX