从 excel/google 电子表格中的文本字符串中提取电子邮件

Tom*_*Tom 9 google-spreadsheets microsoft-excel

我希望从 Google Docs/Excel 中的文本字符串中提取电子邮件地址并自动通过电子邮件发送它们,其中单元格的内容目前未知(直到用户更新)。

例如,他们可能会读到:

  1. 你好,

    我的朋友example@example.com。

    谢谢,

    示例乔

或者

  1. 你应该问

    例子@example.co.uk

我目前有这个公式:

=IFERROR((LEFT(CELL,FIND("@",CELL)-1))&"@"&(regexextract(CELL,"@(.*)"))) 
Run Code Online (Sandbox Code Playgroud)

它适用于几乎所有情况,除了

a) 如示例 1 中所示,其中有人放置了 , 或 。在电子邮件的末尾

b) 如示例 2 中所示,电子邮件从新行开始,它的输入格式为例如。

例子@example.com

我该如何调整公式来纠正这些问题?

nix*_*xda 10

对于 Google 电子表格

谷歌电子表格有这些很酷的内置正则表达式

我们使用第一个来提取邮件地址。将此公式放入 Google 电子表格单元格中:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

正则表达式模式如何工作?

[A-z0-9._%+-]+@[A-z0-9.-]+.[Az]{2,4}

  • A-z表示 anA和 a之间的任何字符z
    注意大写和小写。这种方式不区分大小写
  • 0-9 代表任何数字
  • ._%+- 代表那些标志本身
  • [ ] 表示括号内允许的单个字符
  • +符号放在后面[ ]可以无限重复之前的模式
  • @没有特别的意义。它从字面上搜索一个@标志
  • [A-z0-9.-]+和上面一样。但这次_%+不允许在@标志后面
  • \.搜索单个点。它必须用前面的字符进行转义,\因为.通常是任何字符的占位符
  • 最后[A-z]{2,4}搜索 2,3 或 4 个不区分大小写的字符

使用过的资源