求助正则表达式

allrun1982 2016-12-26 10:59:47
求助问个正则问题。

[cd|0548]+[rf|5555,1111]
[cd|0548]+[rf|5316]+[cd|#3333,#1111]
选第一个 就是 rf和1111 在同一个中括号之内。。rf和1111之间可以有任何数字和符号,111后面也可以跟其他数字和符号,
但是rf和1111必须在一个方括号之内

哪个大神帮个忙 谢谢
...全文
128 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
z123zjf 2016-12-26
  • 打赏
  • 举报
回复
with t as(select '[cd|0548]+[rf|5555,1111]' s from dual union select '[cd|0548]+[rf|5316]+[cd|#3333,#1111]' from dual) select * from t where regexp_like(s,'\[rf[^][]*1111[^][]*\]') 规则比较简单,试的时候,发现方括号要转义。
H_Gragon 2016-12-26
  • 打赏
  • 举报
回复
select replace( substr(  regexp_substr('[cd|0548]+[rf|5555,1111]+[cd|0548]+[rf|5316]+[cd|#3333,#1111]',
                                    '[^+]+',
                                    1,
                                    2),2),']')  x   from dual 

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧