1

如果我得到像

email = "Mark Johnson (mark@johnson.com)"

我怎样才能只打印()中的单词并输出变成

mark@johnson.com

目前我使用正则表达式,但它似乎不适用于我的模式

email = regex("x{(,)}", "var.email")

我该如何解决这个问题,谢谢您的帮助。

4

1 回答 1

2

Terrafrom 使用 RE2 正则表达式引擎,regex如果您在正则表达式模式中定义捕获组,则该函数仅返回捕获的值。如果您的模式中有多个捕获组,它将返回捕获列表,但在这里,您只需要一个。

提取括号内的所有文本:

> regex("[(]([^()]+)[)]", "Mark Johnson (mark@johnson.com)")

[(]匹配一个(字符,将([^()]+)任何一个或多个字符捕获到组 1 中,然后[)]匹配一个)字符。

从括号中提取类似电子邮件的字符串:

> regex("[(]([^()@[:space:]]+@[^()[:space:]]+[.][^()[:space:]]+)[)]", "Mark Johnson (mark@johnson.com)")

在这里,匹配除、和空格之外的[^()@[:space:]]+1 个或多个字符。()@

查看正则表达式演示

于 2020-05-26T08:33:06.107 回答