presto正则表达式
正则表达式函数
所有正则表达式函数都使⽤语法,但有⼀些值得注意的例外:
使⽤多⾏模式(通过(?m)标志启⽤)时,仅\n被识别为⾏终⽌符。此外,该(?d)标志不受⽀持,并且不得使⽤。
不区分⼤⼩写的匹配(通过(?i)标志启⽤)始终以Unicode感知的⽅式执⾏。但是,不⽀持上下⽂相关和本地敏感匹配。此外,该 (?
u)标志不受⽀持,因此不能使⽤。
不⽀持代理对。例如,\uD800\uDC00不被视为U+10000,必须将其指定为\x{10000}。
\b没有基本字符的⾮空格标记的边界()处理不正确。
\Q并且\E在字符类(例如[A-Z123])中不受⽀持,⽽是被视为⽂字。
⽀持Unicode字符类(\p{prop}),但有以下差异:
名称中的所有下划线都必须删除。例如,使⽤ OldItalic代替Old_Italic。
脚本必须直接指定,如果没有 Is,script=或sc=前缀。例:\p{Hiragana}
必须使⽤In前缀指定块。将block=与blk=前缀不被⽀持。例:\p{Mongolian}
分类必须直接指定,如果没有Is, general_category=或gc=前缀。例:\p{L}regexp like
⼆进制属性必须直接指定,不带Is。例:\p{NoncharacterCodePoint}
regexp_extract_all(字符串,模式)->数组(varchar )
由正则表达式匹配的返回⼦(⼀个或多个)pattern 中string:
SELECT regexp_extract_all('1a 2b 14m', '\d+'); -- [1, 2, 14]
regexp_extract_all(字符串,模式,组)->数组(varchar )
发现正则表达式的所有出现pattern在string 与返回所述 group:
SELECT regexp_extract_all('1a 2b 14m', '(\d+)([a-z]+)', 2); -- ['a', 'b', 'm']
regexp_extract(字符串,模式) →varchar
返回由正则表达式匹配的第⼀个字符串pattern 中string:
SELECT regexp_extract('1a 2b 14m', '\d+'); -- 1
regexp_extract(字符串,模式,组) →varchar
查中出现的第⼀个正则表达式pattern, string并返回 group:
SELECT regexp_extract('1a 2b 14m', '(\d+)([a-z]+)', 2); -- 'a'
regexp_like(字符串,模式) →布尔值
计算正则表达式pattern并确定它是否包含在中string。
此功能类似于LIKE运算符,除了模式仅需要包含在其中string,⽽不需要匹配所有string。换句话说,它执⾏ 包含操作⽽不是匹配操作。您可以通过使⽤^和锚定模式来匹配整个字符串$:
SELECT regexp_like('1a 2b 14m', '\d+b'); -- true
regexp_replace(字符串,模式) →varchar
pattern从中删除与正则表达式匹配的⼦字符串的每个实例 string:
SELECT regexp_replace('1a 2b 14m', '\d+[ab] '); -- '14m'
regexp_replace(字符串,模式,替换) →varchar
通过替换正则表达式匹配的⼦串的每个实例 pattern中string使⽤replacement。可以在使⽤编号组或 命名组时引⽤组。通过⽤反斜杠()进⾏转义,可以将美元符号()包括在替换中:replacement$g${name}$\$
SELECT regexp_replace('1a 2b 14m', '(\d+)([ab]) ', '3c$2 '); -- '3ca 3cb 14m'
regexp_replace(字符串,模式,函数) →varchar
pattern在string using中替换与正则表达式匹配的⼦字符串的每个实例 function。所述 function被调⽤为每个匹配与作为数组传递。捕获组号从1开始;没有⽤于整个匹配的分组(如果需要,请⽤括号将整个表达式括起来)。
SELECT regexp_replace('new york', '(\w)(\w*)', x -> upper(x[1]) || lower(x[2])); --'New York'
regexp_split(字符串,模式)->数组(varchar )
string使⽤正则表达式拆分pattern并返回⼀个数组。尾随的空字符串被保留:
SELECT regexp_split('1a 2b 14m', '\s*[a-z]+\s*'); -- [1, 2, 14, ]
参考:官⽹⼿册
相当好⽤,感觉⾃⼰⽆所不能了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。