这是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
原文地址:https://www.cnblogs.com/ldxsuanfa/p/9928344.html
时间: 2024-09-30 07:03:52