【问题标题】:Regex string for Sublime Text to find email address between two commasSublime Text 的正则表达式字符串,用于在两个逗号之间查找电子邮件地址
【发布时间】:2013-07-06 23:46:33
【问题描述】:

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

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

数据看起来像;

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

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

有什么想法还是我在工作中使用了错误的工具?

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

谢谢, 利亚姆

【问题讨论】:

    标签: ruby regex csv sublimetext2


    【解决方案1】:

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

    我建议使用:

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

    Source

    【讨论】:

    • 这无法识别具有多个类似 @domain.com.ar 的域
    【解决方案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

    【讨论】:

    • 完美——如果我将它插入 Sublime 的“查找”字段,它会匹配所有正确的字段——谢谢!!
    • 我将上述正则表达式修改为\S+\@\w+\.\w+,以防万一电子邮件地址的用户名部分使用句点或其他特殊字符。 w 只会捕获字母数字字符。
    • 这无法识别具有多个类似 @domain.com.ar 的域
    【解决方案3】:

    试试这个:

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

    它在一个非常长的 csv 文件中完美运行,其中包含电子邮件和所有其他类型的东西。

    【讨论】:

      【解决方案4】:
      [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-]+)
      

      【讨论】:

        猜你喜欢
        • 2021-05-10
        • 2012-02-23
        • 2013-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-03
        • 1970-01-01
        相关资源
        最近更新 更多