当前位置: 首页 > news >正文

Oracle系列之十:Oracle正则表达式

Oracle正则表达式

  • 1. 基本语法
  • 2. POSIX字符类
  • 3. 正则表达式函数
  • 4. 常用正则表达式

正则表达式 (Regular expression) 是一种强大的文本处理工具,Oracle数据库自9i版本开始引入了正则表达式支持,可帮助开发者快速而准确地匹配、查找和替换字符串,广泛应用于数据查询、数据分析、数据清洗等领域。

1. 基本语法

Oracle正则表达式的语法基于Perl语言的正则表达式语法,区分大小写(case sensitive)。

(1)字符匹配

  • .:匹配除了换行外的任意一个字符;
  • \d:匹配任何数字,相当于 [0-9];
  • \D:匹配任何非数字字符,相当于 [^0-9];
  • \w:匹配任何字母数字字符或下划线,相当于 [a-zA-Z0-9_];
  • \W:表示匹配任何非字母数字字符或下划线,相当于 [^a-zA-Z0-9_]。

(2)限定符

  • *:匹配前一个字符出现0次或多次;
  • +:匹配前一个字符出现1次或多次;
  • ?:匹配前一个字符出现0次或1次;
  • {n}:匹配前一个字符出现n次;
  • {n,}:匹配前一个字符出现n次或更多;
  • {n,m}:匹配前一个字符出现n~m次。

'|' :指两项之间的一个选择。

e.g.

^([a-z]+|[0-9]+)$:表示所有小写字母或数字组合成的字符串。

(3)边界匹配

  • ^:匹配开始位置;
  • $:匹配结束位置;
  • \b:匹配单词边界,即单词的开头或结尾位置;
  • \B:匹配非单词边界,即不是单词的开头或结尾位置。

(4)分组和引用

  • ():分组,标记一个子表达式的开始和结束位置;
  • \num:引用第num个子表达式,num从1开始。

(5)字符集合

  • []:表示一组字符中的任意一个。

(6)转义符

  • \\:表示转义一个字符。

oracle正则表达式还支持一些高级语法,例如贪婪匹配、非贪婪匹配、零宽断言(zero-width assertion)、后向引用(backreference)、捕获组等。

2. POSIX字符类

Oracle数据库中的POSIX字符类是一组特殊的字符类,用于在正则表达式中匹配特定的字符。

POSIX字符类以 [: 开头,以 :] 结尾,中间包含一个或多个字符,代表特定的字符集合。POSIX字符类中的字符集合可以是预定义的,也可以是自定义的。

  • [[:alpha:]] 任何字母,等同于字符集合 [a-zA-Z];
  • [[:digit:]] 任何数字,等同于字符集合 [0-9];
  • [[:alnum:]] 任何字母和数字,等同于字符集合 [a-zA-Z0-9];
  • [[:space:]] 任何白字符;
  • [[:upper:]] 任何大写字母;
  • [[:lower:]] 任何小写字母;
  • [[:punct:]] 任何标点符号;
  • [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

Oracle数据库中,POSIX字符类可以用于各种正则表达式相关的操作,如模式匹配、替换、分割等。由于Oracle数据库中的POSIX字符类与其他数据库或编程语言中的POSIX字符类可能略有不同,具体使用时需要查看相关文档。

3. 正则表达式函数

Oracle数据库提供了多种正则表达式函数,可以对文本数据进行匹配、替换等操作。

  • REGEXP_LIKE: 判断字符串是否匹配指定的正则表达式。

e.g. 查询员工名字以"S"开头,以"n"结尾的记录:

SELECT * FROM emp WHERE REGEXP_LIKE(emp_name, '^S.*n$');
  • REGEXP_REPLACE: 替换字符串中的子串。

e.g. 将字符串"12345"中连续的三个数字替换成星号"*",输出
“*45”:

SELECT REGEXP_REPLACE('12345', '\d{3}', '*') FROM dual;
  • REGEXP_SUBSTR: 提取字符串中匹配指定正则表达式的子串。

e.g. 从字符串"abc 123 def"中提取出连续的数字"123":

SELECT REGEXP_SUBSTR('abc 123 def', '\d+') FROM dual;
  • REGEXP_INSTR: 返回字符串中匹配指定正则表达式的子串的位置。

e.g. 返回字符串"1ab2cd3ef"中第一个连续数字的起始位置,即1

SELECT REGEXP_INSTR('1ab2cd3ef', '\d+') FROM dual;

4. 常用正则表达式

-- 查询value中不是纯数字的记录
select * from employee where not regexp_like(value,'^[[:digit:]]+$');
-- 查询value中不包含任何数字的记录。
select * from employee where regexp_like(value,'^[^[:digit:]]+$');
--查询所有包含小写字母或者数字的记录。
select * from employee where regexp_like(value,'^([a-z]+|[0-9]+)$');
-- 提取字符串中的数字
create or replace function EXTRACT_NUMBER(STR in varchar2) return varchar2 isPOSITION number;STR_EXT varchar2(800);STR_TMP varchar2(800);result  varchar2(800);
beginSTR_EXT:=STR;POSITION:=1;LOOPSTR_TMP:=REGEXP_SUBSTR(STR_EXT,'([0-9]+)',POSITION);result:=result||STR_TMP;STR_EXT:= SUBSTR(STR_EXT,POSITION+LENGTH(STR_TMP),LENGTH(STR));POSITION:=regexp_instr(STR_EXT,'([0-9]+)',1);exit when POSITION is null or POSITION=0;end loop;return(result);
end EXTRACT_NUMBER;

相关文章:

Oracle系列之十:Oracle正则表达式

Oracle正则表达式 1. 基本语法2. POSIX字符类3. 正则表达式函数4. 常用正则表达式 正则表达式 (Regular expression) 是一种强大的文本处理工具,Oracle数据库自9i版本开始引入了正则表达式支持,可帮助开发者快速而准确地匹配、查找和替换字符串&#xff…...

php基础学习之运算符(重点在连接符和错误抑制符)

运算符总结 在各种编程语言中&#xff0c;常用的运算符号有这三大类&#xff1a; 算术运算符&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%位运算符&#xff1a;&&#xff0c;|&#xff0c;^&#xff0c;<<&#xff0c;>>赋值运算符&…...

【CC工具箱1.2.0】更新_免费无套路,60+个工具,原码放出

CC工具箱目前已经更新到1.2.0版本&#xff0c;完全免费无套路。 适用版本ArcGIS Pro 3.0及以上。 欢迎大家使用&#xff0c;反馈bug&#xff0c;以及提出需求和意见&#xff0c;时间和能力允许的话我会尽量满足要求。 如有关于工具的使用问题和需求建议&#xff0c;可以加下…...

Java 将TXT文本文件转换为PDF文件

与TXT文本文件&#xff0c;PDF文件更加专业也更适合传输&#xff0c;常用于正式报告、简历、合同等场合。项目中如果有使用Java将TXT文本文件转为PDF文件的需求&#xff0c;可以查看本文中介绍的免费实现方法。 免费Java PDF库 本文介绍的方法需要用到Free Spire.PDF for Java…...

Sketch 99.1 for macOS

Sketch 99.1 for macOS 概述 这个程序是对矢量绘图的创新性和焕然一新的看法。它特意采用了极简主义的设计&#xff0c;基于一个大小无限、图层自由的绘图空间&#xff0c;没有调色板、面板、菜单、窗口和控件。 此外&#xff0c;它提供了强大的矢量绘图和文本工具&#xff0c;…...

Apache 神禹(shenyu)源码阅读(一)——Admin向Gateway的数据同步(Admin端)

源码版本&#xff1a;2.6.1 单机源码启动项目 启动教程&#xff1a;社区新人开发者启动及开发防踩坑指南 源码阅读 前言 开了个新坑&#xff0c;也是第一次阅读大型项目源码&#xff0c;写文章记录。 在写文章前&#xff0c;已经跑了 Divide 插件体验了一下&#xff08;体…...

Prompt Tuning:深度解读一种新的微调范式

阅读该博客&#xff0c;您将系统地掌握如下知识点&#xff1a; 什么是预训练语言模型&#xff1f; 什么是prompt&#xff1f;为什么要引入prompt&#xff1f;相比传统fine-tuning有什么优势&#xff1f; 自20年底开始&#xff0c;prompt的发展历程&#xff0c;哪些经典的代表…...

Unity3d Shader篇(五)— Phong片元高光反射着色器

文章目录 前言一、Phong片元高光反射着色器是什么&#xff1f;1. Phong片元高光反射着色器的工作原理2. Phong片元高光反射着色器的优缺点优点缺点 二、使用步骤1. Shader 属性定义2. SubShader 设置3. 渲染 Pass4. 定义结构体和顶点着色器函数5. 片元着色器函数 三、效果四、总…...

sql求解连续两个以上的空座位

Q&#xff1a;查找电影院所有连续可用的座位。 返回按 seat_id 升序排序 的结果表。 测试用例的生成使得两个以上的座位连续可用。 结果表格式如下所示。 A:我们首先找出所有的空座位&#xff1a;1&#xff0c;3&#xff0c;4&#xff0c;5 按照seat_id排序&#xff08;上面已…...

【链表】-Lc146-实现LRU(双向循环链表)

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.双向循环链表3.代码 写在后面 一、场景描述 运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (…...

MYSQL学习笔记:MYSQL存储引擎

MYSQL学习笔记&#xff1a;MYSQL存储引擎 MYSQL是插件式的存储引擎 存储引擎影响数据的存储方式 存储引擎是用来干什么的&#xff0c;innodb和myisam的主要区别–数据存储方式----索引 mysql> show engines; ----------------------------------------------------------…...

Bitcoin Bridge:治愈还是诅咒?

1. 引言 主要参考&#xff1a; Bitcoin Bridges: Cure or Curse? 2. 为何需关注Bitcoin bridge&#xff1f; 当前的Bitcoin bridge&#xff0c;其所谓bridge&#xff0c;实际是deposit&#xff1a; 在其它链上的BTC情况为&#xff1a; 尽管当前约有43.7万枚BTC在其它链上…...

Netty应用(七) 之 Handler Netty服务端编程总结

目录 15.Handler 15.1 handler的分类 15.1.1 按照方向划分 15.1.2 handler的结构 15.2 输入方向ChannelInboundHandlerAdapter 15.2.1 输出方向Handler的顺序 15.2.2 多个输入方向Handler之间的数据传递 15.2.2.1 handler消失了 15.2.2.2 手动编写netty提供的new Strin…...

LeetCode、1268. 搜索推荐系统【中等,前缀树+优先队列、排序+前缀匹配】

文章目录 前言LeetCode、1268. 搜索推荐系统【中等&#xff0c;前缀树优先队列、排序前缀匹配】题目类型及分类思路API调用&#xff08;排序前缀匹配&#xff09;前缀树优先队列 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创…...

计算机视觉基础:矩阵运算

矩阵及其表示方式 一个矩阵是由行(row)和列(column)组成的一个矩形数组&#xff0c;通常包含数字。我们可以用大写字母&#xff08;如 A、B&#xff09;来表示一个矩阵。例如&#xff0c;矩阵 A 可能看起来像这样&#xff1a; A [ a11 a12 a13 ][ a21 a22 a23 ][ a31 a32 a3…...

Gateway中Spring Security6统一处理CORS

文章目录 一、起因二、解决方法 一、起因 使用了gateway微服务作为整体的网关&#xff0c;并且整合了Spring Security6&#xff1b;还有一个system微服务&#xff0c;作为被请求的资源&#xff0c;当浏览器向gateway发送请求&#xff0c;请求system资源时&#xff0c;遇到CORS…...

突破编程_C++_基础教程(输入、输出与文件)

1 流和缓冲区 C中&#xff0c;流&#xff08; stream &#xff09;和缓冲区&#xff08; buffer &#xff09;是两个紧密相关的概念&#xff0c;它们在处理输入和输出时起着重要的作用。 流&#xff08; Stream &#xff09; 流是一种抽象的概念&#xff0c;用于表示数据的流动…...

UE的 HUD 类中的必备方法和属性

在屏幕上绘制的方法 1. DrawText() DrawText() 方法允许开发者在屏幕上渲染文本。参数包括文本内容、位置、颜色、字体、缩放等。 void DrawText(const FString& Text, const FLinearColor& TextColor, float ScreenX, float ScreenY, UFont* Font, float Scale 1.…...

单片机的认识

单片机的定义 先简单理解为&#xff1a; 在一片集成电路芯片上集成了微处理器&#xff08;CPU &#xff09;存储器&#xff08;ROM和RAM&#xff09;、I/O 接口电路&#xff0c;构成单芯片微型计算机&#xff0c;即为单片机。 把组成微型计算机的控制器、运算器、存储器、输…...

转发:udig安装 用来为geoserver上shp地图配置显示样式 颜色

下载udig&#xff0c;解压缩 这东东是基于eclipse的&#xff0c;需要Java JRE 把 JDK 1.8 里面的jre目录拷贝到 udig目录下面 udig下载、安装及汉化&#xff0c;简单生成geoserver图层样式sld-CSDN博客...

UE5场景过曝/白屏排查指南:从后期处理体积到项目设置的实战修复

1. 当UE5场景变成"雪盲症"时该怎么办&#xff1f; 第一次打开UE5项目看到白茫茫一片的时候&#xff0c;我差点以为显卡烧了。这种场景过曝现象就像在雪山没戴墨镜&#xff0c;所有细节都被强光吞噬。新手遇到这种情况别慌&#xff0c;我整理了从"急救措施"…...

[路径保护]解决中文路径乱码:从名称错乱到Unicode支持的实践指南

[路径保护]解决中文路径乱码&#xff1a;从名称错乱到Unicode支持的实践指南 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文&#xff08;中文&#xff09;命名 项…...

AI写教材大揭秘!低查重技巧让你的教材脱颖而出!

在编写教材时&#xff0c;依赖相关资料是必不可少的&#xff0c;但传统的资料整合方法已经无法满足现实需求。以往&#xff0c;我们需要从各种渠道&#xff0c;比如课标文件、学术研究以及教学案例中寻找所需的信息&#xff0c;这往往需要耗费数天的时间。即便信息搜集齐全&…...

SDMatte企业级应用:批量商品图去背景+Alpha Matte交付方案

SDMatte企业级应用&#xff1a;批量商品图去背景Alpha Matte交付方案 1. 产品概述 SDMatte是一款专为商业场景设计的高精度AI抠图工具&#xff0c;特别适合电商、广告和设计行业的大规模图像处理需求。它能快速将商品图片中的主体与背景分离&#xff0c;生成带有Alpha通道的透…...

BiliTools:跨平台资源管理与高效解析的哔哩哔哩工具箱

BiliTools&#xff1a;跨平台资源管理与高效解析的哔哩哔哩工具箱 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit/Bili…...

建议收藏|盘点2026年顶尖配置的AI论文平台

一天写完毕业论文在2026年已不再是天方夜谭。以下是2026年最炸裂、实测能大幅提速的AI论文平台&#xff0c;覆盖选题构思、文献分析、内容生成、格式排版四大核心场景&#xff0c;帮你高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首选&…...

SEO_为什么你的网站需要SEO?关键原因解析

<h3 id"seoseo">SEO:为什么你的网站需要SEO&#xff1f;关键原因解析</h3> <p>在当今数字化时代&#xff0c;拥有一个网站是企业或个人展示品牌、产品和服务的重要途径。仅仅拥有一个网站并不足以吸引足够的访问量和客户。这时&#xff0c;SEO&…...

Qwen3.5-4B-Claude推理模型在算法面试辅导中的实战:分步推导+代码示例生成

Qwen3.5-4B-Claude推理模型在算法面试辅导中的实战&#xff1a;分步推导代码示例生成 1. 模型介绍与核心能力 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF是一个专门针对推理任务优化的AI模型&#xff0c;它基于Qwen3.5-4B架构&#xff0c;通过蒸馏训练强化了结构化…...

Java面试如何突击?核心知识点有哪些?该如何准备拿下offer?

一、Java 面试核心知识点&#xff08;按考察优先级排序&#xff09;1. Java 基础面向对象&#xff1a;封装、继承、多态&#xff08;重载与重写&#xff09;、抽象类与接口的区别。String 系列&#xff1a;String 不可变性、StringBuilder 与 StringBuffer 的区别、常量池。集合…...

OpenH264:开源H.264编解码库的技术实现与工程实践

OpenH264&#xff1a;开源H.264编解码库的技术实现与工程实践 【免费下载链接】openh264 Open Source H.264 Codec 项目地址: https://gitcode.com/gh_mirrors/op/openh264 OpenH264作为Cisco维护的开源H.264编解码库&#xff0c;在实时视频通信、流媒体传输和嵌入式设…...