所有的正则表达式函数都使用Java样式的语法。
- 当使用多行模式(通过(?m)标志启用)时,只有n被识别为行终止符。 (?d)标志不受支持,不能使用。
- 大小写相关以Unicode方式执行(通过(?i)标志启用)。 不支持上下文相关和本地匹配。(?u)标志不支持。
- 不支持代理对。 例如,uD800 uDC00不被视为U + 10000,必须指定为x {10000}
- 对于没有基本字符的非间距标记,(b)会被错误地处理。
- 字符集(例如[A-Z123])不支持Q和E,将会被认为是文字。
- Unicode字符类(p {prop})支持以下场景:姓名中的所有下划线都必须删除。例如,使用OldItalic而不是Old_Italic
- 必须直接指定脚本,而不需要使用Is,script =或sc = prefixes。 示例:p {Hiragana}
- 必须使用In前缀指定blcoks。 不支持block =和blk =前缀。 示例:p {Mongolian}
- 必须直接指定类别,不带Is,general_category =或gc =前缀。 示例:p {L}
- 二进制属性必须直接指定,不需要Is。 示例:p {NoncharacterCodePoint}
regexp_extract_all(string, pattern) →array<varchar>
返回字符串中pattern模式匹配的substring(s) :
- SELECT regexp_extract_all(‘1a 2b 14m’, ‘d+’); – [1, 2, 14]
regexp_extract_all(string, pattern, group) →array<varchar>
查找字符串中所有出现的pattern模式,并返回group编号组
- SELECT regexp_extract_all(‘1a 2b 14m’, ‘(d+)([a-z]+)’, 2); – [‘a’, ‘b’, ‘m’]
regexp_extract(string, pattern) → varchar
返回字符串中匹配pattern的第一个子字符串
- SELECT regexp_extract(‘1a 2b 14m’, ‘d+’); – 1
regexp_extract(string, pattern, group) → varchar
查找字符串中第一个出现的pattern模式,并返回group编号组
- SELECT regexp_extract(‘1a 2b 14m’, ‘(d+)([a-z]+)’, 2); – ‘a’
regexp_like(string, pattern) → boolean
评估pattern并确定它是否包含在字符串中
此函数类似于LIKE运算符,期望pattern仅需要包含在字符串中,而不需要匹配所有的字符串。执行一个包含操作而不是匹配操作。可以通过使用^和$来匹配整个字符串
- SELECT regexp_like(‘1a 2b 14m’, ‘d+b’); – true
regexp_replace(string, pattern) → varchar
从字符串中删除与pattern匹配的子字符串的每个实例
- SELECT regexp_replace(‘1a 2b 14m’, ‘d+[ab] ‘); – ‘14m’
regexp_replace(string, pattern, replacement) → varchar
替换字符串中pattern匹配的子字符串的每个实例。 可以使用$ g作为替代使用的引用组,也可以使用$ {name}来引用。替换中的美元符号($)可能会需要用($)进行转义
- SELECT regexp_replace(‘1a 2b 14m’, ‘(d+)([ab]) ‘, ‘3c$2 ‘); – ‘3ca 3cb 14m’
regexp_split(string, pattern) →array<varchar>
使用pattern模式拆分字符串并返回数组。结尾的空字符串被保留
- SELECT regexp_split(‘1a 2b 14m’, ‘s*[a-z]+s*’); – [1, 2, 14, ]