3

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

我认为这将是相当简单的,但似乎正在以很高的节数进入兔子洞。

数据看起来像;

data,data,email@address.com,data,data 等 注意:每条记录大约有 100 个字段,大约 300 条记录

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

有什么想法还是我使用了错误的工具来完成这项工作?

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

谢谢,利亚姆

4

4 回答 4

3

user2141046 的表达式找不到像“ab@c.com”这样的电子邮件地址

我建议使用:

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

来源

于 2016-01-04T04:21:46.420 回答
2

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

\w+\@\w+\.\w+

与\。可能不需要(取决于语言)。

一个 perl 单行器,它做确切的事情:

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

笔记

确保在我写的一封邮件的 enw 电子邮件中使用 \@,意思是new_email\@server.com

于 2013-07-09T11:34:42.047 回答
1

试试这个:

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

它在一个非常长的 csv 文件上运行良好,里面充满了电子邮件和所有其他类型的东西。

于 2017-09-19T20:09:23.963 回答
0
[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-]+)
于 2018-01-14T16:23:39.730 回答