首页 > 解决方案 > 如何使用 REGEXEXTRACT 从 Google 表格中用户输入的列表中提取所有电子邮件地址

问题描述

我有一个带有电子邮件地址列表的用户输入。它们的分隔符可以是空格、逗号、分号、制表符、换行符、多个分隔符等...

我正在尝试“清理”输入和产品只是一个逗号分隔的有效电子邮件地址列表。

这是我用于有效电子邮件地址的正则表达式:([a-z0-9'_.-]+?@[a-z0-9_.-]+?\.[a-z]{2,3})

这是一些示例输入:

aaa@bbb.com ccc@ddd.ef, ggg@hhh.ij       ;;;;**a23asdf =_ kkkkkk@llll.com
:
:;,
       mmmm@nnn.op"

REGEXEXTRACT只提取第一个匹配项。

在此处输入图像描述

我怎样才能让它提取所有找到的匹配项?

我看到网上的技巧说有两个REGEXEXTRACT电话,一个来替换比赛,然后另一个来替换剩下的东西。虽然这有效,但我想知道是否有可能REGEXEXTRACT提取所有匹配项。就像正则表达式的全局修饰符。

标签: regexgoogle-sheetsgoogle-sheets-formula

解决方案


REGEXEXTRACT因为它不支持全局修饰符,所以它会相对困难。但一些替代方案可能是(仍然使用你的模式):

=TEXTJOIN(", ",1,QUERY(TRANSPOSE(SPLIT(REGEXREPLACE(A1,"([a-z0-9'_.-]+?@[a-z0-9_.-]+?\.[a-z]{2,3})","|$1|"),"|")),"Select Col1 where Col1 like '%@%'"))

或者更简单一点:

=ARRAYFORMULA(TEXTJOIN(", ",1,IFERROR(REGEXEXTRACT(SPLIT(A1," "),"([a-z0-9'_.-]+?@[a-z0-9_.-]+?\.[a-z]{2,3})"),"")))

请注意,您可能需要根据可能出现或不出现的字符来更改REGEXREPLACE现在的用途。|


推荐阅读