《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有<<1984>>也蛮好看。
如何使用regexp_extract®exp_replace函数将以上文本中所有书籍名称都提取出来?
select substr( regexp_replace( regexp_extract( regexp_replace(regexp_replace('《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有<<1984>>也蛮好看。','<<','《'),'>>','》') ,'(.*》)',1) ,'.*?(《[^》|^《]+》)',',$1') ,2) as books ;
代码解析:
step1:两个regexp_replace()依次将<<规整为《,将>>规整为》;
step2:regexp_extract正则提取满足pattern='.*》'时的值,此操作的主要目的为剔除最后一个书名号》后的文本内容
select regexp_extract( regexp_replace(regexp_replace('《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有<<1984>>也蛮好看。','<<','《'),'>>','》') ,'(.*》)',1) ;
此时提取出来的结果为:
《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有《1984》
step3:regexp_replace将书名号前边的内容替换成,
#此处的是指第一个小括号中的匹配结果 select regexp_replace( '《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有《1984》' ,'.*?(《[^》|^《]+》)',',') ;
此时提取出来的结果为:
,《平凡的世界》,《巴黎圣母院》,《1984》
此处需要注意的是:
*1).正则表达式中用了非贪婪匹配.*?,如果使用贪婪匹配.*,最终返回的结果将会是
,《1984》
*2)若省去step2的操作,提取出来的结果不满足条件
select regexp_replace( regexp_replace(regexp_replace('《平凡的世界》评分不错,《巴黎圣母院》改变成的电影不错,还有<<1984>>也蛮好看。','<<','《'),'>>','》') ,'.*?(《[^》|^《]+》)',',$1') ;
此时提取出来的结果为:
,《平凡的世界》,《巴黎圣母院》,《1984》也蛮好看。
step4:substr截取除第一个逗号之外的其余内容
select substr(',《平凡的世界》,《巴黎圣母院》,《1984》',2) ;
最终提取出来的结果为:
《平凡的世界》,《巴黎圣母院》,《1984》
猜你喜欢
- 20小时前手机掉厕所怎么办(手机掉蹲厕里了应该怎么处理)
- 17小时前闪送员(闪送员接单app)
- 17小时前欧多桑(欧多桑火锅)
- 15小时前即日是什么意思(即日是词语吗)
- 9小时前铜钱树图片(铜钱树图片欣赏)
- 6小时前吉利ec7(吉利ec715rv)
- 6小时前等位基因(等位基因和非等位基因的概念)
- 5小时前上是翘舌音节吗(翘舌音上颚)
- 2小时前vivo手机喇叭进水了怎么办(vivox30喇叭进水有杂音怎么办)
- 21分钟前关于祝福的成语(关于祝福的成语1000个)
网友评论
- 搜索
- 最新文章
- 热门文章