正则表达式函数

更新时间:2017-10-17 17:20:31

所有的正则表达式函数都使用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) :

  1. SELECT regexp_extract_all(‘1a 2b 14m’, d+’); [1, 2, 14]

regexp_extract_all(string, pattern, group) → array<varchar>

查找字符串中所有出现的pattern模式,并返回group编号组

  1. SELECT regexp_extract_all(‘1a 2b 14m’, ‘(d+)([a-z]+)’, 2); [‘a’, b’, m’]

regexp_extract(string, pattern) → varchar

返回字符串中匹配pattern的第一个子字符串

  1. SELECT regexp_extract(‘1a 2b 14m’, d+’); 1

regexp_extract(string, pattern, group) → varchar

查找字符串中第一个出现的pattern模式,并返回group编号组

  1. SELECT regexp_extract(‘1a 2b 14m’, ‘(d+)([a-z]+)’, 2); a

regexp_like(string, pattern) → boolean

评估pattern并确定它是否包含在字符串中

此函数类似于LIKE运算符,期望pattern仅需要包含在字符串中,而不需要匹配所有的字符串。执行一个包含操作而不是匹配操作。可以通过使用^和$来匹配整个字符串

  1. SELECT regexp_like(‘1a 2b 14m’, d+b’); true

regexp_replace(string, pattern) → varchar

从字符串中删除与pattern匹配的子字符串的每个实例

  1. SELECT regexp_replace(‘1a 2b 14m’, d+[ab] ‘); 14m

regexp_replace(string, pattern, replacement) → varchar

替换字符串中pattern匹配的子字符串的每个实例。 可以使用$ g作为替代使用的引用组,也可以使用$ {name}来引用。 替换中的美元符号($)可能会需要用($)进行转义

  1. SELECT regexp_replace(‘1a 2b 14m’, ‘(d+)([ab]) ‘, 3c$2 ‘); 3ca 3cb 14m

regexp_split(string, pattern) → array<varchar>

使用pattern模式拆分字符串并返回数组。结尾的空字符串被保留

  1. SELECT regexp_split(‘1a 2b 14m’, s*[a-z]+s*’); [1, 2, 14, ]