Sublime Text的正则表达式字符串,用于查找两个逗号之间的电子邮件地址

时间:2013-07-09 11:27:27

标签: ruby regex csv sublimetext2

我是regex's和Sublime的新手,并且在尝试对csv文件中的所有电子邮件地址进行查找/替换时遇到问题。

我认为这将是相当简单的,但似乎是以很快的速度沿着兔子洞走下去。

数据看起来像;

数据,数据,电子邮件@Address.com,数据,数据等注意:每条记录大约有100个字段,大约有300条记录

我的想法是寻找@符号,然后左右移动直到我得到逗号,然后用我的新电子邮件地址替换,但我不能获胜。

有什么想法,或者我是否使用了错误的工具?

(同样用Ruby标记,好像我需要做一些脚本,然后我会尝试在Ruby中弄清楚)

谢谢, 利安

5 个答案:

答案 0 :(得分:4)

user2141046的表达式找不到像-" a.b@c.com"

这样的电子邮件地址

我建议使用:

  

[A-ZA-Z0-9#$%&安培;'!? + - / = \ ^ _`{|}〜 - ] + @ [A-ZA-Z0-9 - ] +(?:[A-ZA-Z0-9 - ] +)

Source

答案 1 :(得分:1)

我不熟悉ruby语言,但是找到你想要的正则表达式是:

\w+\@\w+\.\w+
<\ n>与\。可能不需要(取决于语言)。

一个完成确切事情的perl单行程序:

perl -pi -e 's/\w+\@\w+\.\w+/<your new email here>/g' <csv file here>

注意

请确保在我编写的一行中使用enw电子邮件中的\ @,这意味着new_email\@server.com

答案 2 :(得分:1)

试试这个:

[a-zA-Z0-9.!#$%&'*+-/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*

它在一个非常长的csv文件中完美地工作,该文件充满了电子邮件和所有其他类型的东西。

答案 3 :(得分:1)

[a-zA-Z0-9.!#$%&'+-/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[a-zA-Z0-9-]+)

无法正常工作,因为某些域有2个或更多级别(如com.br) 使用:

[a-zA-Z0-9.!#$%&'+-/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:.[\.a-zA-Z0-9-]+)

答案 4 :(得分:0)

text = "data,data,email@address.com,data,data etc" text.scan(/,([^,@]+@[^,@]+),/).flatten  =&GT; [&#34; email@address.com"]

没有必要使电子邮件regexp过于复杂。 @就足够了。