写点什么

SQL 正则表达式

用户头像
.
关注
发布于: 2021 年 01 月 17 日

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+)$


发布于: 2021 年 01 月 17 日阅读数: 14
用户头像

.

关注

还未添加个人签名 2018.12.29 加入

还未添加个人简介

评论

发布
暂无评论
SQL 正则表达式