REGEX
描述
REGEX
一个行函数,用于对某个字符串执行整个字符串匹配 TEXT
将 value 与正则表达式匹配,并返回与正则表达式的第一个捕获组相匹配的字符串部分。语法
REGEX
(string_expression
,"regex_matching_pattern
")返回值
返回匹配的
TEXT
正则表达式的第一个捕获组的值。如果没有匹配项,则返回 NULL
。输入参数
- string_expression
- 必修内容。类型为“”的字段或表达式的名称TEXT(或文字字符串)。
- regex_matching_pattern
- 必修内容。基于 Java 编程语言的正则表达式模式匹配语法的正则表达式模式。要返回非 NULL 值,正则表达式模式必须与整个字符串匹配。TEXT值
正则表达式构造
有关用于定义正则表达式匹配模式的构造的信息,请参见正则表达式参考信息。
捕获组和非捕获组
在正则表达式中,通过用一对括号将子模式括起来来指定组。一个模式可以具有多个组,并且这些组可以嵌套。从第一个左括号开始,从左到右对组进行 1-
n
编号。系统始终有一个隐式组 0,其中包含整个匹配项。例如,以下模式:(a(b*))+(c)
包含三个组:
group 1: (a(b*)) group 2: (b*) group 3: (c)
捕获组
默认情况下,组
会捕获
可生成匹配项的文本,并且仅会捕获最近的匹配项。该 REGEX
函数返回与正则表达式中的第一个捕获组匹配的字符串。例如,如果上述表达式的输入字符串为 abc
,整个 REGEX
函数将匹配 abc
,但仅返回组 1 的结果,即 ab
。非捕获组
在某些情况下,您可能希望使用括号对子模式进行分组,但不想捕获文本。非捕获组以 开头。
(?:
(左括号后跟一个问号和冒号)。例如, h(?:a|i|o)t
匹配项 hat
或 hit
或 hot
,但不会捕获 a
, i
,或 o
从子表达式示例
匹配所有可能的电子邮件地址,其模式为
用户名
@提供商
。域
,但仅从 电子邮件
字段返回电子邮件地址的 提供商
部分:REGEX([email], "^[a-zA-Z0-9._%+-]+@
([a-zA-Z0-9._-]+)
\.[a-zA-Z]{2,4}$")匹配 Web 日志的请求行,其中值采用以下格式:
并仅返回所请求的 HTML 页面名称:GET /some_page.html HTTP/1.1
REGEX([weblog_request_line], "GET\s/
([a-zA-Z0-9._%-]+\.[html])
\sHTTP/[0-9.]+")从中提取英寸部分
height
字段(示例值为 ) 6'2"
, 5'11"
(请注意使用双引号对原义引号进行转义):REGEX([height], "\d\'(\d)+""")
提取的所有内容
device
字段,当值为 iPod
, iPad
,或 iPhone
:REGEX([device], "(iP[ao]d|iPhone)")