SQL 正则表达式
1、函数:regexp_extract(str, regexp[, idx]) ----字符串正则表达式解析函数
参数解释:
其中:
(1)str 是被解析的字符串或字段名
(2)regexp 是正则表达式
(3)idx 是返回结果 取表达式的哪一部分 默认值为 1。
0 表示把整个正则表达式对应的结果全部返回, 1 表示返回正则表达式中第一个() 对应的结果 以此类推
注意点:
要注意的是 idx 的数字不能大于表达式中()的个数。
小例子:
1) select regexp_extract(‘hitdecisiondlist’,’(i)(.*?)(e)’,0) ;
得到的结果为:itde,返回全部结果
2) select regexp_extract(‘hitdecisiondlist’,’(i)(.*?)(e)’,1) ;
得到的结果为:i,返回第一个结果
3) select regexp_extract(‘hitdecisiondlist’,’(i)(.*?)(e)’,2) ;
得到的结果为:td,返回前两位
最终目标:'^\\[(.+)\\]$'
split(regexpreplace(regexpextract(detail,'^\\[(.+)\\]$',1),'\\}\\,\\{', '\\}\\|\\|\\{'),'\\|\\|') AS str
1、元字符匹配
(.) 表示匹配除换行符以外的任意字符。
(\w) 表示匹配字母、下划线、数字或汉字(\\W)。
(\d) 表示匹配数字
(\s) 表示匹配任意的空白符
([ ]) 表示匹配方括号中任一字符
([^匹配内容]) 表示匹配方括号中任一字符
2、位置匹配
(^) 表示匹配字符串的开始,空值:^$
($) 表示匹配字符串的结束
(\b) 表示匹配单词的开始或结束。
(\B) 表示匹配非单词的开始或结束
3、频率匹配
(*) 表示匹配重复 0 次或多次
(+) 表示匹配重复一次或更多次
(?) 表示匹配重复 0 次或 1 次
({n}) 表示匹配重复 n 次
({n,}) 表示重复 n 次或更多次
({n,m}) 表示重复 n 到 m 次
'^\\[(.+)\\]$'
^表示字符串开始,\\:实际上指\,\\会被引擎解释为\;
首先字符串中的\\被编译器解释为\
然后作为正则表达式,\.又被正则表达式引擎解释为.
如果在字符串里只写\.的话,第一步就被直接解释为.,之后作为正则表达式被解释时就变成匹配任意字符了
正则前提是字符串 JS 解析字符串的时候 还有 JS 的机制 所以\\相当于 JS 解析字符串时候使用到的就是把字符串^\\d+(\\.\\d+)$ 变成正则^\d+(\.\d+)$
版权声明: 本文为 InfoQ 作者【.】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf2f4a9935f60c11c223002a1】。文章转载请联系作者。
评论