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>
展开
 我来答
198901245631
2015-11-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:9037
采纳率:92%
帮助的人:1712万
展开全部
可以通过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'。)
micro0369
2014-10-10 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4001万
展开全部

貌似这个符合你的要求:

SELECT REGEXP_SUBSTR('<p>2342234<b>23</b>434</p>23<p>eee</p>','(<p>){1}(.*?)(</p>){1}',1) FROM DUAL
追问
原来ORACLE也支持懒惰匹配!谢了,题外话,我想问问,ORACLE支持零宽断言吗?像我原来的思路,我希望是匹配不包含的字串,[^(
)]这个不能实现效果,因为这个写错了,但是用也有问题
追答
呵呵,这个我也不熟悉;按照以前的一个例子改出来的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式