ORACLE REGEXP_SUBSTR截取字符串问题
SELECTREGEXP_SUBSTR('<p>2342234<b>23</b>434</p>23<p>eee</p>','(<p>){1}[^(</p>)]*(</p>...
SELECT REGEXP_SUBSTR('<p>2342234<b>23</b>434</p>23<p>eee</p>','(<p>){1}[^(</p>)]*(</p>){1}',1) FROM DUAL
这段代码我原意想截取第一段<p>的内容,但是实质截取的是<p>eee</p> 展开
这段代码我原意想截取第一段<p>的内容,但是实质截取的是<p>eee</p> 展开
2个回答
展开全部
可以通过REGEXP_SUBSTR函数(配合正则表达式)来实现字符串截取。
举例:
sql:select regexp_substr('CYJ8-ABC','[0-9]+') from dual;
以上sql执行结果:8;
备注:
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
举例:
sql:select regexp_substr('CYJ8-ABC','[0-9]+') from dual;
以上sql执行结果:8;
备注:
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
展开全部
貌似这个符合你的要求:
SELECT REGEXP_SUBSTR('<p>2342234<b>23</b>434</p>23<p>eee</p>','(<p>){1}(.*?)(</p>){1}',1) FROM DUAL
追问
原来ORACLE也支持懒惰匹配!谢了,题外话,我想问问,ORACLE支持零宽断言吗?像我原来的思路,我希望是匹配不包含的字串,[^(
)]这个不能实现效果,因为这个写错了,但是用也有问题
追答
呵呵,这个我也不熟悉;按照以前的一个例子改出来的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询