grep的正则表达式问题

sgp667

我正在尝试编写一个正则表达式,它将在CVS(Coma分隔值)文件中找到一堆电话号码。

抓住是我只对特定列中的电话号码感兴趣(仅在特定数量的昏迷之后才感兴趣)。在下面,我有正则表达式可以做到这一点,并且按照Javascript标准,它可以正常工作。

(?:^([^^]*\,){3}[^^]*)\d{3}-\d{3}-\d{4}

我实际上在Bash中工作,并且使用sed,grep,但我什至找不到grep和sed使用的正则表达式标准?

这是示例文本。

请注意,现在我使用'^'代替','来使值分开,因为用户在值中包括了逗号。

这不是实际数据,只是为了保留个人隐私

28434658^17 Three^2013-09-19T19:57:23Z^80 W 54th St, Penthouse & 4th Fl, NY, 10018s212-409-1641^^Mary Szyb 347-340-1918^2 x week Thur 2.5hrs  & Sat 4 hrs
28937693^356 West 36th street^2013-09-19T18:17:57Z^356 West 36th street, suite 706sNew York New York 10018^null^null^on call: 
29219313^333 rector pl^2013-10-07T17:11:36Z^333 Rector Place 248-469-5859^^Jose Hernandez^2 x week Wed & Fri
28854346^50 Can^2013-09-23T13:10:54Z^152 East 28th Street, 7th Floor, NY, 10018s917-932-3962s646-710-4170^155 W 24rd St 3rd FL^null^Swlvia Smith347-933-6630sIrena Brown 347-991-1346s5 x week Mon-Fri
28434698^4Eleven^2013-09-19T19:57:23Z^112 West 28th Street, 3th Fl,sNY, 10018s917-922-3862s646-710-4170^^null^null

我还要澄清一件事,正确的输出将是:

212-409-1641
248-469-5859
917-932-3962
646-710-4170
917-922-3862
646-710-4170

因为这些是第4列中唯一的电话号码

sgp667

我正在发布结束工作的正则表达式:

([0-9]{3}-[0-9]{3}-[0-9]{4})(?=[^^]*(\^[^^]*){3}$)

谢谢大家的帮助

我想从这个问题中可以得出的教训是,如果一个解决方案不起作用,请尝试从不同角度进行工作,在这种情况下,请从后面数列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章