Oracle正则表达式学习
目录
一、正则表达简介
二、REGEXP_LIKE(x,'匹配项')
三、REGEXP_INSTR
四、REGEXP_SUBSTR
五、REGEXP_REPLACE
一、正则表达简介
相关网址:
https://cloud.tencent.com/developer/article/1456428
https://www.cnblogs.com/lxl57610/p/8227599.html
https://blog.csdn.net/qiuzhi__ke/article/details/78849570
正则表达式有四个关键字:
REGEXP_LIKE : 正则模糊匹配——%
REGEXP_INSTR : 正则查找索引位置——数字
REGEXP_SUBSTR : 正则截取——字符串
REGEXP_REPLACE : 正则替换——替换完成后的结果
一些常用的正则表达:
^--匹配一个字符串的开始
[^] -- ^非
$--匹配字符串的结尾
[]--用于指定一个匹配列表
+ --匹配一次或多次出现
?--匹配0次或1次
{M} --匹配m次。
{M,} --至少匹配m次。
{M,N} --至少匹配m次,但不多于n次
[0-9]:匹配任意单个数字,从0到9
[a-zA-Z]:匹配任意单个字母,包括小写字母(a到z)和大写字母(A到Z)
CREATE TABLE T_STR (CONTENT VARCHAR2(1000));INSERT INTO T_STR VALUES ('ADJKSAV,AFDSA13214');
INSERT INTO T_STR VALUES ('ADJKSAV,AFDSA13214');
INSERT INTO T_STR VALUES ('SADA324,AFDS213@32A13214');
INSERT INTO T_STR VALUES ('ADJKSAV,AFDSA.,Z.,SKDF13214');
INSERT INTO T_STR VALUES ('ADJKSAV,AFDSA');
INSERT INTO T_STR VALUES ('1232143225435');
INSERT INTO T_STR VALUES ('张三,李四,王五');
INSERT INTO t_str VALUES('17823459999');
COMMIT;SELECT * FROM T_STR;
二、REGEXP_LIKE(x,'匹配项')
WHERE 字段 LIKE 'A_'
示例:找出 CONTENT 中包含数字的行有哪些?
select CONTENT
from T_STR
where regexp_like(CONTENT,'[0-9]+');
示例:找出 CONTENT 由纯数字组成
select *
from T_STR
where regexp_like(CONTENT,'^[0-9]+$')
-- where regexp_like(CONTENT,'^\d+$')
-- where regexp_like(CONTENT,'^[[:digit:]]+$');
示例:找出 CONTENT 由13位数字组成的有哪些?
select *
from T_STR
where regexp_like(CONTENT,'^[0-9]{13}$');
示例:校验输入手机号合法(11位纯数字,1开头,第二位是3/5/7/8/9)
-- REGEXP_LIKE 校验 11位纯数字
-- REGEXP_LIKE(str,'^[0-9]{11}$')select *
from T_STR
where regexp_like(CONTENT,'^[1][35789][0-9]{9}$');
--^:表示字符串的开头。
--[1]:匹配数字1。
--[35789]:匹配数字3、5、7、8或9中的任意一个。
--[0-9]{9}:匹配任意数字0到9,重复9次。
--$:表示字符串的结尾
示例:找出 CONTENT 中 包含 字母的 有哪些
select *
from T_STR
where regexp_like(CONTENT,'[a-zA-Z]+');
三、REGEXP_INSTR
regexp_instr(在哪个字符串中,正则表达式,从哪个位置开始匹配,第几次匹配)
示例:查找ENAME中 从第一位开始 第二次出现'T'的位置
示例:查找ENAME中 从第一位开始 第二次出现 英文字母 的位置
select ENAME, regexp_instr(ENAME, '[a-zA-Z]', 1, 2) rg
from EMP;
练习:
-- 1.输出所有员工姓名是 5个 英文字母组成的,员工信息,用正则LIKE
select *
from EMP
where REGEXP_LIKE(ENAME, '^[a-zA-Z]{5}$');
2.查找所有员工 姓名 是 从第二位开始 第三次出现 英文字母的 位置。
-- 输出 姓名 + 位置
select ENAME, regexp_instr(ENAME, '[a-zA-Z]', 2, 3) loc
from EMP;
四、REGEXP_SUBSTR
语法同substr
regexp_substr(字段,正则表达式,第几个字符开始匹配正则表达式,取第几个匹配组)
REGEXP_SUBSTR(source_string, -- 源文本pattern, -- 正则表达式模式[position], -- 起始位置(可选,默认1)[occurrence], -- 匹配第几次出现的结果(可选,默认1)[match_parameter] -- 匹配参数(可选))
- 第一个参数是源字符串,
- 第二个参数是正则表达式截取规则,
- 第三个表示从第几个字符开始匹配正则表达式,
- 第四个参数表示取第几个匹配组
示例:将 CONTENT 中'张三,李四,王五'内容 按照逗号进行分割
--从字符串中提取匹配模式的子串
select regexp_substr(CONTENT, '[^,]+', 1, 1) a,regexp_substr(CONTENT, '[^,]+', 1, 2) b,regexp_substr(CONTENT, '[^,]+', 1, 3) c
from T_STR
where CONTENT = '张三,李四,王五';
[^,]表示匹配除逗号以外的任意字符
+
表示前面的字符(即除逗号以外的字符)出现一次或多次参数
1
(第一个1
):表示从目标字符串的第 1 个字符开始进行匹配。参数
1
(第二个1
):表示返回匹配到的第 1 个子串。如果这个参数改为2
,就会返回按逗号分割后的第二个子串(前提是存在第二个子串),以此类推。
--[^-]+:匹配除了连字符以外的任意单个字符,至少出现一次或多次。
CREATE TABLE TT(CON VARCHAR2(100));
INSERT INTO TT VALUES ('广东省-深圳市-龙岗区');
INSERT INTO TT VALUES ('广东省-广州市-天河区');
INSERT INTO TT VALUES ('内蒙古-呼和浩特-蕲春县');
COMMIT;
示例:取 TT 表中所有的市名
select regexp_substr(CON, '[^-]+', 1, 2) city_name
from TT;
示例:将姓名分列,并为每个人均摊金额
select ENAME,AMOUNT,regexp_substr(ENAME, '[^,]+', 1, 1) a,regexp_substr(ENAME, '[^,]+', 1, 2) b,regexp_substr(ENAME, '[^,]+', 1, 3) c,-- 人数相当于逗号的数量+1=总长度-去掉逗号的长度+1length(ENAME) - length(replace(ENAME, ',')) + 1 num,AMOUNT / length(ENAME) - length(replace(ENAME, ',')) + 1 amt
from T_WRITEOFF;
五、REGEXP_REPLACE
regexp_replace(字符串,正则表达式,替换之后的值)
select ENAME,regexp_replace(ENAME,'[^,]','Q') Q
from T_WRITEOFF;
regexp_replace(ENAME,'[^,]','Q')中,如果换成[^,]+,意思是:匹配除逗号 (,) 以外的任意字符的连续序列(即一个或多个非逗号字符)
结果就会变成:
因此,要注意+号的使用
示例:查找字符串 'KJSADKABxkabdksa1432mn2k3n4k2,.1#@$mnad' 中,英文字母的个数
'[^a-zA-Z]+' 将非英文的替换为空,剩下的就是英文字母
select regexp_replace('KJSADKABxkabdksa1432mn2k3n4k2,.1#@$mnad', '[^a-zA-Z]+') a,length(regexp_replace('KJSADKABxkabdksa1432mn2k3n4k2,.1#@$mnad', '[^a-zA-Z]+')) b
from DUAL;
示例:查找字符串 ' 01010101011100110 '中 1 的个数
-- 总长度-非1的个数
select regexp_replace(' 01010101011100110 ', '[^1]+') a,length(regexp_replace(' 01010101011100110 ', '[^1]+')) b
from DUAL;
练习:
1. 截取 字符串 'CEO-总监-经理-主管-小组长-基层员工'中的'小组长'
select regexp_substr('CEO-总监-经理-主管-小组长-基层员工', '[^-]+', 1, 5) a
from DUAL;
2.提取字符串 'KJASDAKzjxzzkjz212321,,.,1DA' 中,所有的小写英文字母
select regexp_replace('KJASDAKzjxzzkjz212321,,.,1DA', '[^a-z]+') a
from DUAL;
相关文章:

Oracle正则表达式学习
目录 一、正则表达简介 二、REGEXP_LIKE(x,匹配项) 三、REGEXP_INSTR 四、REGEXP_SUBSTR 五、REGEXP_REPLACE 一、正则表达简介 相关网址: https://cloud.tencent.com/developer/article/1456428 https://www.cnblogs.com/lxl57610/p/8227599.html https://…...
校招 java 面试基础题目及解析
我将结合常见的校招Java面试基础题目,从概念阐述、代码示例等角度展开,为你提供一份可用于学习的技术方案及应用实例。 校招Java面试基础题目解析与学习指南 在Java校招面试中,扎实掌握基础知识是成功的关键。本文将围绕常见的Java基础面试…...
# STM32F103 SD卡读写程序
下面是一个基于STM32F103系列微控制器的SD卡读写完整程序,使用标准外设库(StdPeriph)和FatFs文件系统。 硬件准备 STM32F103C8T6开发板(或其他F103系列)SD卡模块(SPI接口)连接线缆 硬件连接 SD卡模块 STM32F103 CS -> PA4 (SPI1_NSS) SCK -> PA5 (SPI…...
Spring中循环依赖问题的解决机制总结
一、解决机制 1. 什么是循环依赖 循环依赖是指两个或多个Bean之间相互依赖对方,形成一个闭环的依赖关系。最常见的情况是当Bean A依赖Bean B,而Bean B又依赖Bean A时,就形成了循环依赖。在Spring容器初始化过程中,如果不加以特殊…...
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统
青少年编程与数学 01-011 系统软件简介 04 Linux操作系统 一、Linux 的发展历程(一)起源(二)早期发展(三)成熟与普及(四)移动与嵌入式领域的拓展 二、Linux 的内核与架构(…...

微软PowerBI考试 PL300-使用适用于 Power BI 的 Copilot 创建交互式报表
微软PowerBI考试 PL300-使用适用于 Power BI 的 Copilot 创建交互式报表 Microsoft Power BI 可帮助您通过交互式报表准备数据并对数据进行可视化。 如果您是 Power BI 的新用户,可能很难知道从哪里开始,并且创建报表可能很耗时。 通过适用于 Power BI …...
损坏的RAID5 第十六次CCF-CSP计算机软件能力认证
纯大模拟 提前打好板子 我只通过4个用例点 然后就超时了。 #include<iostream> #include<cstring> #include<algorithm> #include<unordered_map> #include<bits/stdc.h> using namespace std; int n, s, l; unordered_map<int, string>…...
Android USB 通信开发
Android USB 通信开发主要涉及两种模式:主机模式(Host Mode)和配件模式(Accessory Mode)。以下是开发USB通信应用的关键知识点和步骤。 1. 基本概念 主机模式(Host Mode) Android设备作为USB主机,控制连接的USB设备 需要设备支持USB主机功能(通常需要O…...

Prompt提示工程指南#Kontext图像到图像
重要提示:单个prompt的最大token数为512 # 核心能力 Kontext图像编辑系统能够: 理解图像上下文语义实现精准的局部修改保持原始图像风格一致性支持复杂的多步迭代编辑 # 基础对象修改 示例场景:改变汽车颜色 Prompt设计: Change …...

产品经理课程(十一)
(一)复习 1、用户需求不等于产品需求,挖掘用户的本质需求 2、功能设计的前提:不违背我们的产品的基础定位(用一句话阐述我们的产品:工具:产品画布) 3、判断设计好坏的标准…...

Moldflow充填分析设置
1. 如何选择注塑机: 注塑机初选按注射量来选择: 点网格统计;选择三角形, 三角形体积就是产品的体积 47.7304 cm^3 点网格统计;选择柱体, 柱体的体积就是浇注系统的体积2.69 cm^3 所以总体积产品体积浇注系统体积 47.732.69 cm^3 材料的熔体密度与固体…...

Imprompter: Tricking LLM Agents into Improper Tool Use
原文:Imprompter: Tricking LLM Agents into Improper Tool Use 代码:Reapor-Yurnero/imprompter: Codebase of https://arxiv.org/abs/2410.14923 实机演示:Imprompter 摘要: 新兴发展的Agent可以将LLM与外部资源工具相结合&a…...
python asyncio的作用
协程是可以暂停运行和恢复运行的函数。协程函数是用async定义的函数。它与普通的函数最大的区别是,当执行的时候不会真的执行里面的代码,而是返回一个协程对象,在执行协程对象时才执行里面真正的代码。 例如代码: async def cor…...

【大模型:知识图谱】--3.py2neo连接图数据库neo4j
【图数据库】--Neo4j 安装_neo4j安装-CSDN博客 需要打开图数据库Neo4j, neo4j console 目录 1.图数据库--连接 2.图数据库--操作 2.1.创建节点 2.2.删除节点 2.3.增改属性 2.4.建立关系 2.5.查询节点 2.6.查询关系 3.图数据库--实例 1.图数据库--连接 fr…...

如何理解机器人课程的技术壁垒~壁垒和赚钱是两件不同的事情
答疑: 有部分朋友私聊说博客内容,越来越不适合人类阅读习惯…… 可以做这种理解,我从23年之后,博客会不会就是写给机器看的。 或者说我在以黑盒方式测试AI推荐的风格。 主观-客观-主观螺旋式发展过程。 2015最早的一篇博客重…...
如何从零开始建设一个网站?
当你没有建站的基础和建站的知识,那么应该如何开展网站建设和网站管理。而今天的教程是不管你是为自己建站还是为他人建站都适合的。本教程会指导你如何进入建站,将建站的步骤给大家分解: 首先我们了解一下,建站需要那些步骤和流程…...

selinux firewalld
一、selinux 1.说明 SELinux 是 Security-Enhanced Linux 的缩写,意思是安全强化的 linux; SELinux 主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用 DAC(Discretionary Access Cont…...

408第一季 - 数据结构 - 字符串和KMP算法
闲聊 这章属于难点但考频低 3个名词记一下:模式匹配,主串,字串(模式串) 举个例子 主串 aabaaaabaab 字串 aabaab 模式匹配 从主串找到字串 暴力解法 也是不多说 很暴力就是了 KMP算法 next数组 它只和字串有关 先…...

如何查看自己电脑安装的Java——JDK
开始->运行->然后输入cmd进入dos界面 (快捷键windows->输入cmd) 输入java -version,回车 出现了一下信息就是安装了jdk 输入java -verbose,回车 查看安装目录...
青少年编程与数学 01-011 系统软件简介 07 iOS操作系统
青少年编程与数学 01-011 系统软件简介 07 iOS操作系统 一、发展历程(一)诞生初期(2007 - 2008年)(二)功能拓展与升级(2009 - 2013年)(三)持续优化与创新&…...

电力系统时间同步系统之三
2.6 电力系统时间同步装置 时间同步装置主要完成时间信号和时间信息的同步传递,并提供相应的时间格式和物理接口。时间同步装置主要由三大部分组成:时间输入、内部时钟和时间输出,如图 2-25 所示。输入装置的时间信号和时间信息的精度必须不…...

火语言RPA--界面应用详解
新建一个界面应用后,软件将自动弹出一个界面设计器,本篇将介绍下流程设计器中各部分的功能。 UI控件列表 显示软件中自带的所有UI控件流程库 流程是颗粒组件的容器,可在建立的流程中添加颗粒组件编写成规则流程。 流程编辑好后再绑定UI控件…...

基于Spring Boot的云音乐平台设计与实现
基于Spring Boot的云音乐平台设计与实现——集成协同过滤推荐算法的全栈项目实战 📖 文章目录 项目概述技术选型与架构设计数据库设计后端核心功能实现推荐算法设计与实现前端交互设计系统优化与性能提升项目部署与测试总结与展望 项目概述 🎯 项目背…...

Neovim - 打造一款属于自己的编辑器(一)
文章目录 前言(劝退)neovim 安装neovim 配置配置文件位置第一个 hello world 代码拆分 neovim 配置正式配置 neovim基础配置自定义键位Lazy 插件管理器配置tokyonight 插件配置BufferLine 插件配置自动补全括号 / 引号 插件配置 前言(劝退&am…...

RAG检索系统的两大核心利器——Embedding模型和Rerank模型
在RAG系统中,有两个非常重要的模型一个是Embedding模型,另一个则是Rerank模型;这两个模型在RAG中扮演着重要角色。 Embedding模型的作用是把数据向量化,通过降维的方式,使得可以通过欧式距离,余弦函数等计算…...

CLion社区免费后,使用CLion开发STM32相关工具资源汇总与入门教程
Clion下载与配置 Clion推出社区免费,就是需要注册一个账号使用,大家就不用去找破解版版本了,jetbrains家的IDEA用过的都说好,这里嵌入式领域也推荐使用。 CLion官网下载地址 安装没有什么特别,下一步就好。 启动登录…...

第21讲、Odoo 18 配置机制详解
Odoo 18 配置机制详解:res.config.settings 与 ir.config_parameter 原理与实战指南 在现代企业信息化系统中,灵活且可维护的系统参数配置是模块开发的核心能力之一。Odoo 作为一款高度模块化的企业管理软件,其参数配置机制主要依赖于两个关…...
LinkedList、Vector、Set
LinkedList 基本概念 LinkedList 是一个双向链表的实现类,它实现了 List、Deque、Queue 和 Cloneable 接口,底层使用双向链表结构,适合频繁插入和删除操作。 主要特点 有序,可重复。 查询速度较慢,插入/删除速度较…...
SQL 基础入门
SQL 基础入门 SQL(全称 Structured Query Language,结构化查询语言)是用于操作关系型数据库的标准语言,主要用于数据的查询、新增、修改和删除。本文面向初学者,介绍 SQL 的基础概念和核心操作。 1. 常见的 SQL 数据…...
GitHub 趋势日报 (2025年06月05日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 1472 onlook 991 HowToCook 752 ChinaTextbook 649 quarkdown 451 scrapy 324 age…...