Regex 使用Tableau提取文章中多个单词的正则表达式

Regex 使用Tableau提取文章中多个单词的正则表达式,regex,tableau-api,Regex,Tableau Api,我有一篇短文,我需要在表格中从中提取几个单词。全文如下: 这看起来像个可疑的账户。请看详情 在下面姓名:约翰·马修电子邮件:约翰。mathew@abc.com电话:+1 111-111-1111部门:abc 如有查询,请联络:---- 姓名、电子邮件、电话和部门在同一行中,用空格隔开。我使用了下面的正则表达式,它仅在部门中运行良好: regexp_extract([CASE DESCRIPTION],'Department : (.+)') 当我应用这一名称时,我得到: 姓名:约翰·马修电子邮

我有一篇短文,我需要在表格中从中提取几个单词。全文如下:

这看起来像个可疑的账户。请看详情 在下面姓名:约翰·马修电子邮件:约翰。mathew@abc.com电话:+1 111-111-1111部门:abc

如有查询,请联络:----

姓名、电子邮件、电话和部门在同一行中,用空格隔开。我使用了下面的正则表达式,它仅在部门中运行良好:

regexp_extract([CASE DESCRIPTION],'Department : (.+)')
当我应用这一名称时,我得到:

姓名:约翰·马修电子邮件:约翰。mathew@abc.com电话:+1111-111-1111 部门:abc

而不仅仅是名字。电子邮件也是如此


我如何解决这个问题

在我看来,问题在于您的正则表达式只有'(.+)'作为其捕获组,这基本上意味着“一切”(在指定的字符串之后)。由于字段都在一行上,“name”之后的所有内容都包括电子邮件、电话和部门。(正则表达式与部门一起工作,因为它是最后一件事。)
所以,为了让它正常工作,你需要给你的正则表达式一些东西,而不是让它停下来。要仅捕获名称,您需要在电子邮件标记之前停止,依此类推。差不多

Name = regexp_extract([CASE_DESCRIPTION],'Name: (.+) Email:')  
email = regexp_extract([CASE_DESCRIPTION],'Email: (.+) Phone:')
phone = regexp_extract([CASE_DESCRIPTION],'Phone: (.+) Department:')
department = regexp_extract([CASE_DESCRIPTION],'Department: (.+)')

您可以在数据可视化阶段使用正则表达式,用于各种有用的事物,但是如果您有许多复杂、凌乱的文本字段,您需要尝试提取多种信息,则还应该考虑在管道中添加信息提取阶段,以便在可视化之前提取结构。至少当您从原型概念转向生产系统时。例如,在这个空间中有很多Python库,它们正是我想要的。非常感谢Hellion:)