首页 > 解决方案 > 使用 Tableau 提取段落中的多个单词的正则表达式

问题描述

我有一段话,我需要在画面中从中提取几个词。段落如下:

这看起来像是一个可疑帐户。请看下面的详细信息。姓名:John Mathew 电子邮件:john.mathew@abc.com 电话:+1 111-111-1111 部门:abc

更多咨询请联系:----

姓名、电子邮件、电话和部门在同一行,用空格隔开。我使用了以下正则表达式,它仅适用于部门:

regexp_extract([CASE DESCRIPTION],'Department : (.+)')

当我应用这个名字时,我得到:

姓名:John Mathew 电子邮件:john.mathew@abc.com 电话:+1 111-111-1111 部门:abc

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

我该如何解决这个问题?

标签: regextableau-api

解决方案


在我看来,问题在于您的正则表达式只有 '(.+)' 作为其捕获组,这基本上意味着“一切”(在指定字符串之后)。由于字段都在一行上,“姓名”之后的所有内容都包括电子邮件、电话和部门。(正则表达式与部门一起使用,因为它是最后一行。)
因此,要使其正常工作,您需要为您的正则表达式提供除行尾以外的其他内容以停止。要仅捕获名称,您需要在电子邮件标签之前停止,依此类推。就像是

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: (.+)')

推荐阅读