oracle正则表达式反向提取,backreference Oracle正则表达式中的反向摘引

"本文介绍了Oracle正则表达式中的反向引用功能,通过示例说明了如何使用1、2等引用之前捕获的子串。在`regexp_like`函数中,展示了如何判断字符串中特定位置的数字是否重复;在`regexp_replace`函数中,演示了如何替换匹配到的部分,保留特定位置的字符。例如,给定的`regexp_replace`操作将返回'1257'。"
摘要由CSDN通过智能技术生成

backreference Oracle正则表达式中的反向引用

144135477.jpg

这是Oracle对正则表达式的backreference的描述

从定义中可以看到,当匹配表达式中已()的形式将一个子串包含起来,后面就可以以\?的形式来引用。\1对应第一个(),\2对应第二个...

反向引用的引入使得正则表达式的匹配功能变得更加强大,介绍两个在oracle正则函数中的应用

regexp_like

regexp_like('1211233','^([0-9])(\d)\1\1\2(\d)\3$')

上面这个例子中,匹配表达式里,\1表示第一个([0-9]),这个表达式要判断字符串中的第3、4位数字是否和第1位相同,而不仅仅是匹配[0-9]

regexp_replace

regexp_replace('1234567','^(.)(.)(.)(.)(.)(.)','\1\2\5')

这里,将符合匹配表达式中的部分替换掉,换成满足\1\2\5的内容,即第一个(.)第二个(.)和第五个(.)

猜猜这里会返回什么?

由于^(.)(.)(.)(.)(.)(.)匹配了字符串的前6位,因此结果为\1\2\5||第6位之后的部分,即1257

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值