regex - 如何使用 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
提取所有匹配项。就像正则表达式的全局修饰符。
解决方案
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
现在的用途。|
推荐阅读
- google-cloud-platform - GCP 上的 WordPress 实例上的 HTTPS 连接被拒绝
- c# - Xamarin 错误:找不到所引用的对象
- c# - 如何让两个插件互相接收和发送消息?
- python - 图形工厂不会在 colab 中加载
- python - tkcalendar TclError:未知选项“-17/06/2020”
- python - 仅在 AWS 实例上阻止使用 Python 进行抓取 - 阻止请求
- c++ - 为什么初始化 std::vector 时不能使用模板整数?
- discord.py - discord.py 公会加入 dmall
- google-apps-script - 将变量从一个 html 页面传递到另一个 html 页面
- leaflet - 传单:如何缩放以保持固定位置?