我是regex's和Sublime的新手,并且在尝试对csv文件中的所有电子邮件地址进行查找/替换时遇到问题。
我认为这将是相当简单的,但似乎是以很快的速度沿着兔子洞走下去。
数据看起来像;
数据,数据,电子邮件@Address.com,数据,数据等注意:每条记录大约有100个字段,大约有300条记录
我的想法是寻找@符号,然后左右移动直到我得到逗号,然后用我的新电子邮件地址替换,但我不能获胜。
有什么想法,或者我是否使用了错误的工具?
(同样用Ruby标记,好像我需要做一些脚本,然后我会尝试在Ruby中弄清楚)
谢谢, 利安
答案 0 :(得分:4)
user2141046的表达式找不到像-" a.b@c.com"
这样的电子邮件地址我建议使用:
[A-ZA-Z0-9#$%&安培;'!? + - / = \ ^ _`{|}〜 - ] + @ [A-ZA-Z0-9 - ] +(?:[A-ZA-Z0-9 - ] +)
答案 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过于复杂。 @
就足够了。