正则表达式支持的函数列表
| 函数 | 说明 |
|---|---|
| RLIKE | 用于检查一个字符串是否符合指定的正则表达式模式。 |
| REGEXP_EXTRACT | 利用指定的正则表达式(regexp)从输入字符串(str)中提取匹配的文本。 |
| REGEXP_EXTRACT_ALL | 用于从字符串中提取与正则表达式匹配的所有子串。 |
| REGEXP_REPLACE | 用于在字符串 str 中查找所有匹配正则表达式 regexp 的子字符串,并将它们替换为指定的字符串 rep。 |
使用说明
Lakehouse 使用的正则表达式引擎是 re2。
- POSIX字符组:允许使用如
[[:alnum:]]这样的字符组。 - 反斜杠序列:包括
\d(数字)、\D(非数字)、\s(空白字符)、\S(非空白字符)、\w(单词字符)、\W(非单词字符)、\b(单词边界)和\B(非单词边界)。 - POSIX通配符:如
.(匹配任意单个字符)和*(匹配前一个元素的零次或多次出现)。 - Unicode支持:所有正则表达式函数均支持Unicode字符。
转义字符的处理
在 SQL 语句中使用字符串常量时,如果包含反斜杠序列或元字符(如\d、\s、*、?),这些转义字符会被自动转义。例如,SELECT '\\' AS col; 的输出将是 \。对于表中实际存储的值为 \\ 的情况,不会发生转义,只有字符串常量会经历这种转义。
因此,当编写需要匹配这些特殊序列的正则表达式时,需要添加额外的转义字符。例如:
使用正则表达式进行匹配时,需要对含有反斜杠序列或元字符的字符串进行转义:
字符串前缀 r 的使用
为了避免在不确定何时需要转义的情况下手动处理转义字符,Lakehouse 支持在字符串前添加 r 前缀,表示 字符串 中的转义字符不会被转义,可以直接输入到正则表达式中运行。这样,用户可以像编写普通正则表达式一样,而不必担心 SQL 引擎的转义问题。例如:
通过使用 r 前缀,Lakehouse 简化了正则表达式的使用,使得文本匹配和数据处理更加直观和高效。
联系我们
