Oracle 正则表达式实例详解
FORM开发中的按行拆分需求:拆分后的行要有规律,并按前后层次排序
需求分析如下:
现有行: 2 , 2.1 , 2.2 , 2.3 3
2.1.1, 2.1.2 , 2.1.3 , 2.2.1 , 2.1.1.1, 2.1.1.2,
对 2 进行拆分得到的 结果应该是 2.4 (2.4 是通过 查看历史记录中以2 开头,有一位小数点,小数点后一位最大值,获得该最大值+1 ,得到既是新行的后缀,保证拆分是按照前后顺序递增的)
对 2.1 进行拆分得到的应该是 :2.1.4 首先要保证 每次拆分得到的下一行都是多一位小数点
对2.1 拆分 获取最大后缀 比较对象 时候 应该匹配前缀是2.1的 且只有两位小数点的 (排除前缀符合位数不符合的情况:2.1.1.1 ,2.1.1.2 )
对3 进行拆分 没有历史记录是以 3开头的情况 这时候 就要重新 开始拆分:得到的应该是 3.1
这里的关键就是匹配历史记录进行比较,决定拆分后的最后一位的最大值
匹配的时候不能按照 数字的位数来判断,因为数字有可能是两位数,三位数,应该根据小数点来判断
匹配要使用到 正则表达式:
与PHP、Python一样Oracle 的正则表达式函数也是 主要由四个函数实现:相似匹配,定位查找,获取匹配子字符串,替换匹配结果(最重要)
(1)相似匹配: regexp_like()
regexp(source_str,pattern,match_parameter)
第一个参数:原字符串,第二个参数匹配模式,第三个参数匹配选项
第三个参数 匹配选项在这几个函数中都要相似作用(可选)
常用: i:大小写不敏感; c:大小写敏感; n:点号 . 不匹配换行符号;
m:多行模式; x:扩展模式,忽略正则表达式中的空白字符。
匹配成功返回true 失败返回 false
我的使用:
IF REGEXP_LIKE(DEL_LINE_NUMBER, '^\d*\.\d*\.\d*$') THEN --匹配只有两个小数点的数字,字符串
模式中的符号说明:模式需要用一对双引号括起来
^ 标明字符串的开头, $ 标明字符串的结尾
\d 匹配 一个0-9 的数字 * 号 匹配前面的字符0次或更多次
\. 匹配一个点号,因为点号有其他含义,所以用\作为转义
(2)定位查找字符位置:regexp_instr( )
regexp_instr(source_string ,pattern,position,occurrence ,return_option ,match_parameter )
source_string:输入的字符串
pattern:正则表达式
position:标识从第几个字符开始正则表达式匹配。(默认为1)
occurrence:标识第几个匹配组。(默认为1)
return_option:0——返回第一个字符出现的位置。1:pattern下一个字符起始位置。
match_parameter:匹配模式
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- Java 调用 WebService 服务的详细步骤有哪些?(java调用WebService服务的步骤是什么)
- Java中MVC设计模式的特点有哪些?(java中mvc设计模式有哪些特点)
- 如何进行 Java FastCGI 的性能优化?(含策略详解)(java fastcgi的性能优化策略)
- Java 动态定时任务重启后消失的解决办法(java动态定时任务重启就没了怎么解决)
- 如何调整 Java 虚拟机参数?(详细教程及常见问题解答)(java虚拟机参数如何调整)
- 如何分析 JavaOutOfMemoryError 的错误日志?(JavaOutOfMemoryError的错误日志如何分析)
- Java 中缓存流的优势与劣势究竟有哪些?(Java中缓存流的优势与劣势分别是什么)
- Java 中 Playwright 的优缺点分别有哪些?(java中playwright的优缺点有哪些)
- 在 Java 中怎样生成随机正方形坐标?(Java中如何生成随机正方形坐标)
- 如何在 Java 中定义 list 并实现反转?(Java定义list怎样实现反转)