oracle的正则表达式应用-课件


IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 14
Regexp_like的使用方法
• Select * from test_table • Where regexp_like(name,’^[0-9]{1,3}.[09]{1,3}.[0-9]{1,3}.[0-9]{1,3}$’)
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 11
Regexp_like的用方法
• select * from test_table • where regexp_like(field_1,'[0-9]') • select * from test_table • where regexp_like(field_1,'[A-z]')
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 12
Regexp_like的使用方法
• select * from test_table • where regexp_like(name,'[[:alpha:]]') • select * from test_table • where regexp_like(name,'[[:alnum:]]')
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 2
正则表达式简单介绍
• • • • “^” 行的起始位置([^a]表示非a字符) “$ ”行的结束位置 “|”匹配分隔两边的任意一个表达式 “(…)”
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service 创新、沟通、 创新、沟通、追求卓越 24
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 15
Regexp_substr的使用方法
• REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串 • REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]]) • 注: • srcstr 源字符串 • pattern 正则表达式样式 • position 开始匹配字符位置 • occurrence 匹配出现次数 • match_option 匹配选项(区分大小写)
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 13
Regexp_like的使用方法
• select * from test_table • where regexp_like(name,'[[:digit:]]') • Select * from test_table • Where regexp_like(name,’of’,’i’)
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 3
正则表达式简单介绍
• • • • “?” 匹配的次数可是1或0次 “* ” 匹配的次数从0到无穷大 “+” 匹配的次数从1到无穷大 “{x1,x2}”区配的次数从X1次到x2次
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service 创新、沟通、 创新、沟通、追求卓越 7
Regexp_like的使用方法
• select * from test_table • where regexp_like(field_1,'^(欧阳|李)小二') • Select * from test_table • Where field_1 like ‘欧阳小二%’ • Or field_1 like ‘李小二%’
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service 创新、沟通、 创新、沟通、追求卓越 22
Regexp_substr的使用方法
• Select regexp_substr('asdfafd<main>dafda', '<[^>]+>') from dual 这里我们在<>中间去一个^>这样在匹配<之后 ,在向后查询的时候确保在匹配到>之前不 再在有>,不然的话就要有可以出错的情况。
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 21
Regexp_substr的使用方法
• select regexp_substr('1PSN/231_3253/ABc', '[[:alnum:]]*',1,2) • from dual; • [[:alnum:]]* 表示匹配0个或者多个字母或者 数字字符 • 注:因为是匹配0个或者多个,所以这里第 2次匹配的是“/”(匹配了0次),而不是 “231”,所以结果是“Null”
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 4
Regexp_like的使用方法
• select * from test_table • where regexp_like(field_1,'^1234') • Select * from test_table • Where field_1 like ‘1234%’
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 19
Regexp_substr的使用方法
• select regexp_substr('@1PSN/231_3253/ABc', '[^[:digit:]]+$') from dual; [^[:digit:]]+$ 表示匹配1个或者多个不是数字 结尾的字符
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 17
Regexp_substr的使用方法
• select regexp_substr('@@/231_3253/ABc', '@*[[:alnum:]]+') from dual; @* 表示匹配0个或者多个@ [[:alnum:]]+ 表示匹配1个或者多个字母或数字 字符
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 9
Regexp_like的使用方法
• select * from test_table • where regexp_like(field_1,'^李[小]+二')
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 23
Regexp_substr的使用方法
• Select regexp_substr('asdfafd<main>da>fda', '<[^<]+>') from dual 在这个例子中,我们在<main>之后还在da>, 这样的话,如果我们没有添加^>,正则表 达式就会向后继续去匹配,直到最后一个> 为至,这样就会出现偏差
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service
创新、沟通、 创新、沟通、追求卓越 20
Regexp_substr的使用方法
• select regexp_substr('Tom_Kyte@', '[^@]+') from dual; [^@]+ 表示匹配1个或者多个不是“@”的字符
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service 创新、沟通、 创新、沟通、追求卓越 8
Regexp_like的使用方法
• select * from test_table • where regexp_like(field_1,‘^李[小]?二') • select * from test_table • where regexp_like(field_1,'^李[小]*二')
IT综合服务提供商 IT综合服务提供商 The Integrated Providers of IT Service 创新、沟通、 创新、沟通、追求卓越 18
Regexp_substr的使用方法
合集下载

oracle正则表达式

oracle正则表达式

POSIX 正则表达式由标准的元字符(metacharacters)所构成:
'^' 表示字符串的开始
'$' 表示字符串的结束
'.' 表示任何字符
字符的范围,比如说'[a-z]',表示任何ASCII 小写字母,与字符类"[[:lower:]]"" 等价
'?' 允许一个后继字符匹配零次或一次
REGEXP_LIKE 与LIKE 操作符相似。如果第一个参数匹配正则表达式它就解析为TRUE。例如Where REGEXP_LIKE(ENAME,'^J[AO]','i') 将在ENAME 以JA 或JO 开始的情况下返回一行数据。'I' 参数指定正则表达式是大小写敏感的。另外还可以在CHECK 约束和函数索引中指定REGEXP_LIKE。例如:
Oracle 8 和Oracle 9i中缺乏灵活性的SQL 正则表达式最终在Oracle 10g中得到了解决。Oracle 数据库目前内建了符合POSIX 标准的正则表达式。
四个新的函数分别是:REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和EGEXP_REPLACE。它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。
REGEXP_INSTR 与INSTR 函数类似。它返回一个字符串中匹配一个正则表达式的第一个子串的开始位置。例如:
Select REGEXP_INSTR('The total is $400 for your purchase.','$[[:digit:]] ')

正则表达式PPT示例讲解.ppt

正则表达式PPT示例讲解.ppt
• Examples Analysis
– ……
• Additional Matters
– Experience & Skills – Recommend for learning
• Q&A
Introduction
Some notes about Regular Expressions
Some notes about Regular Expressions
• 起源 – 最早从 Unix 中的qed 编辑器,并作为文本编辑和搜索工具中一个 重要部分直到现在,属于Unix下专利,尤其是Perl中应用,NET中 Regex从Perl中衍生而来
• 简单定义? – 简写为 Regexes,描述了一种字符串匹配的模式,检查一个串是否 含有某种子串、将匹配的子串做替换或者从某个串中取出符合某 个条件的子串等。也即是一串特殊的字符,转换为某种算法,根 据这个算法来匹配文本 (类似通配符、SQL中的%、词法语法分析)。
反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹 配“plain”中的“p”。
字符范围。匹配指定范围内的任何字符。例如,“[a-z]”匹 配“a”到“z”范围内的任何小写字母
反向范围字符。匹配不在指定的范围内的任何字符。例如, “[^a-z]”匹配任何不在“a”到“z”范围内的任何字符
括号中的任一字符
DEMO
Match different charact符、文本、反向引用或八进制转义 符。例如, “\n”匹配换行符,“\\”匹配“\”,[\-]转义连字符, 当查找?、“。”、[name]不作为单字符(\[name\])等时候使用
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供 以后使用。要匹配这些字符,请使用 \( 和 \)

oracle的正则表达式

oracle的正则表达式

oracle的正则表达式根据定义的规律进行数据的检索、添加、删除、分析、叠加、插入和修整。

Oracle使用正则表达式离不开这4个函数:1。

regexp_like2。

regexp_substr3。

regexp_instr4。

regexp_replace1.regexp_like只能用于条件表达式,和like 类似,但是使用的正则表达式进行匹配,语法很简单:regexp_like(source_char,pattern,match_parameter)2.regexp_substr 函数,和substr 类似,用于拾取合符正则表达式描述的字符子串,语法如下:regexp_substr(source_char,pattern,position,occurrence,match_parameter)3.regexp_instr 函数,和instr 类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:regexp_instr(source_char,pattern,position,occurrence,return_option,match_parameter)4.regexp_replace函数,和replace 类似,用于替换符合正则表达式的字符串,语法如下:regexp_replace(source_char,pattern,replace_string,position,occurrence,match_parameter)这里解析一下几个参数的含义:1。

source_char,输入的字符串源,2。

pattern,正则表达式。

3。

match_parameter,匹配选项。

取值范围:i:大小写不敏感;c:大小写敏感;n:点号 . 不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。

4。

position,标识从第几个字符开始正则表达式匹配。

可选。

搜索在字符串中的开始位置。

Oracle数据库正则表达式

Oracle数据库正则表达式

Oracle数据库正则表达式正则表达式:⽆论是在前端还是后台正则表达式都是⼀个⾄关重要的知识点,例如判断⼀个⼿机号码输⼊是否正确,如果使⽤Java、C或者其他语⾔进⾏字符串进⾏判断,也许写⼏⼗⾏代码都不⼀定能解决,⽽且漏洞百出,⽽使⽤正则表达式,⼀⾏代码则可轻易解决,下⾯是举例说明正则表达式的⽤法:1: \d 代表⼀个(阿拉伯数字)任意数字 例如:判断⽤户输⼊的是否为11位数字(当然⼿机号码是不能这么简答的表达,只是解释⼀下\d的⽤法)1select'ok'2from dual3where regexp_like('188****5678','\d\d\d\d\d\d\d\d\d\d\d')2: . 代表⼀个(任意字母)任意字母 这⾥需要注意的是,如果输⼊的数字确实需要字母 . 的话,不能直接输 . 要转换⼀下格式,输⼊ \. 即可,这个需要注意。

3: [[:number:]] ⼀个任意数字(可以使⼗六进制) 这个⽤的并不多,如果现实⼗六进制,可以使⽤如下⽅式即可1select'ok'2from dual3where regexp_like('str','[0-9a-fA-F]')4: [[:alpha:]] ⼀个任意⼤⼩写字母5: [ ] 匹配到⽅括号内的其中⼀个字母 ⽅括号中只能匹配到其中的任意⼀个字母,或者是7 或者是8或者是9,只能是1个1select'ok'2from dual3where regexp_like('8','[379]') 例如下⾯的就是ASCII码中,数字3到ASCII码⼩写的 a 其中的任意⼀个字符的匹配1select'ok'2from dual3where regexp_like('9','[3-a]') 当然如果是12345678这样的连续的数字可以这么写1select'ok'2from dual3where regexp_like('str','[1-8]') 如果是要匹配 12345678 中的其中⼀个,或者是字母 a也⾏,就可以这么写,a可以写到前边,也可以写到后⾯,这并⽆所谓,因为只匹配⼀个⽽已1select'ok'2from dual3where regexp_like('str','[a1-8]')6: () 单词匹配 单词匹配,⼀般⽤竖线隔开,例如:⼩明喜欢吃苹果或者⾹蕉或者樱桃,此时就应该是⽤单词的匹配,在圆括号中任选⼀个。

oracle sql正则表达式

oracle sql正则表达式

oracle sql正则表达式Oracle SQL正则表达式使用`REGEXP_LIKE`和`REGEXP_REPLACE`等函数。

`REGEXP_LIKE`函数用于在查询中应用正则表达式模式匹配。

它的一般语法是:```sqlSELECT column1, column2, ...FROM table_nameWHERE REGEXP_LIKE(column_name, 'pattern', 'start', 'match');```其中,`column_name`是要进行模式匹配的列名,`pattern`是正则表达式模式,`start`是可选的起始位置,`match`是可选的匹配类型。

例如,要查询以数字开头和结尾,长度为7位的字符串,可以使用以下查询:```sqlSELECTFROM fzqWHERE REGEXP_LIKE(value, '^[0-9]{6}[0-9]$');```REGEXP_REPLACE`函数用于在查询中应用正则表达式替换。

它的一般语法是:```sqlSELECT REGEXP_REPLACE(column_name, 'pattern', 'replacement','start', 'count', 'match')FROM table_name;```其中,`column_name`是要进行替换的列名,`pattern`是正则表达式模式,`replacement`是替换字符串,`start`是可选的起始位置,`count`是可选的替换次数,`match`是可选的匹配类型。

例如,要将字符串中的所有数字替换为空字符串,可以使用以下查询:```sqlSELECT REGEXP_REPLACE(column_name, '[0-9]', '', 1, 0, 'i')FROM table_name;```注意:在Oracle SQL中,正则表达式默认是不区分大小写的,如果要进行区分大小写的匹配,可以使用`'i'`作为匹配类型。

第21章 Oracle中的正则表达式

第21章  Oracle中的正则表达式

21.4
本章实例
在进行正则表达式匹配时,还可以忽略字符大小写形 式进行匹配。这是比使用LIKE判式更加灵活和方便之处。 select * from people where regexp_like(name, 'or'); select * from people where regexp_like(name, 'or', 'i');
21.2.6
Oracle中正则表达式的特殊性
[[:alnum:]]:表示任意字母和数字。 [[:space:]]:表示任意空白字符,正则表达式的一般语 法为\s。
[[:upper:]]:表示任意大写字母。
[[:punct:]]:表示任意标点符号。 [[:xdigit:]]:表示任意16进制的数字,相当于[0-9a-fAF]。
21.3 正则都提供了对正则表达式的支 持。而这种支持,主要是通过提供函数来体现的。Oracle中 共有四个正则表达式相关函数,它们分别是: regexp_like()


regexp_instr()
regexp_substr() regexp_replace()
21.6
习题
1.简述正则表达式与通配符的区别。 2.简述正则表达式匹配时的贪婪原则。 3.简述Oracle正则表达式的特殊性。
4.利用regexp_replace()函数将YYYY-MM-DD格式 的字符串,转换为MM/DD/YYYY格式。
22.1.2
正则表达式与编程语言
在各种编程语言中,可以说,正则表达式是无处不在 的。正则表达式在各种编程语言中高度统一,都遵循一致的 语法。因此,一旦熟悉了一种编程语言中的正则表达式,那 么,可以直接应用于其他编程语言。编程语言同时也是正则 表达式的载体,没有编程语言,正则表达式的作用将无从发 印

oracle正则表达式用法

Oracle正则表达式基于Perl语言的正则表达式语法,其基本语法和使用方法如下: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次。

3. 边界匹配:* ^:匹配开始位置。

* $:匹配结束位置。

* \b:匹配单词边界,即单词的开头或结尾位置。

* \B:匹配非单词边界,即不是单词的开头或结尾位置。

4. 分组和引用:* ( ):分组,标记一个子表达式的开始和结束位置。

* \num:引用第num个子表达式,num从1开始。

5. 字符集合:[]表示一组字符中的任意一个。

6. 转义符:\表示转义一个字符。

7. 其他高级语法支持:贪婪匹配、非贪婪匹配、零宽断言(zero-width assertion)、后向引用(backreference)、捕获组等。

另外,Oracle 10g支持正则表达式的四个新函数分别是REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR和REGEXP_REPLACE,它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

请注意,具体使用方法可能因不同的数据库版本或应用场景而有所不同。

建议查阅Oracle官方文档或相关教程以获取更详细和准确的信息。

oracle正则表达式

Oracle Database 10g中的正规表达式特性是一个用于处理文本数据的强大工具Oracle Database 10g的一个新特性大大提高了您搜索和处理字符数据的能力。

这个特性就是正规表达式,是一种用来描述文本模式的表示方法。

很久以来它已在许多编程语言和大量UNIX 实用工具中出现过了。

Oracle 的正规表达式的实施是以各种SQL 函数和一个WHERE子句操作符的形式出现的。

如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能。

已经对正规表达式很熟悉的读者可以了解如何在Oracle SQL 语言的环境中应用这种功能。

什么是正规表达式?正规表达式由一个或多个字符型文字和/或元字符组成。

在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式cat。

它被读作字母c,接着是字母a和t,这种模式匹配cat、location和catal og之类的字符串。

元字符提供算法来确定Oracle 如何处理组成一个正规表达式的字符。

当您了解了各种元字符的含义时,您将体会到正规表达式用于查找和替换特定的文本数据是非常强大的。

验证数据、识别重复关键字的出现、检测不必要的空格,或分析字符串只是正规表达式的许多应用中的一部分。

您可以用它们来验证电话号码、邮政编码、电子邮件地址、社会安全号码、IP 地址、文件名和路径名等的格式。

此外,您可以查找如HTML 标记、数字、日期之类的模式,或任意文本数据中符合任意模式的任何事物,并用其它的模式来替换它们。

用Oracle Database 10g使用正规表达式您可以使用最新引进的Oracle SQL REGEXP_LIKE操作符和REGEXP_INSTR、REGE XP_SUBSTR以及REGEXP_REPLACE函数来发挥正规表达式的作用。

您将体会到这个新的功能如何对LIKE操作符和INSTR、SUBSTR和REPLACE函数进行了补充。

oracle正则表达式regexp_like用法

oracle正则表达式regexp_like用法摘要:1.简介- Oracle 数据库- 正则表达式(Regular Expression)- regexp_like 函数2.regexp_like 函数的基本语法- 语法结构- 参数说明3.regexp_like 函数的用法- 匹配字符串- 匹配数字- 匹配日期- 匹配特殊字符4.regexp_like 函数的实例- 实例1:匹配字符串- 实例2:匹配数字- 实例3:匹配日期- 实例4:匹配特殊字符5.regexp_like 函数与like 的比较- 相似之处- 不同之处6.总结- regexp_like 函数的优势- regexp_like 函数的应用场景正文:Oracle 数据库是业界知名的关系型数据库管理系统,广泛应用于各种企业和组织的数据存储和管理。

在Oracle 数据库中,正则表达式(Regular Expression)是一种强大的文本处理工具,可以帮助用户快速进行数据查询和筛选。

regexp_like 函数是Oracle 数据库中提供的一个正则表达式匹配函数,可以对字符串进行模式匹配。

regexp_like 函数的基本语法如下:```regexp_like(string, pattern)```其中,string 是需要匹配的字符串,pattern 是正则表达式模式。

regexp_like 函数的用法非常丰富,可以匹配各种类型的数据。

以下是一些常见的用法:- 匹配字符串:可以使用通配符*和?进行字符串匹配。

例如,要匹配以"ab"开头的字符串,可以使用`regexp_like("ab*", "ab")`。

- 匹配数字:可以使用数字范围进行匹配。

例如,要匹配1 到10 之间的整数,可以使用`regexp_like(数字,"^[1-9][0-9]?$")`。

Oracle中正则表达式的使用实例教程

Oracle中正则表达式的使⽤实例教程前⾔正则表达式已经在很多软件中得到⼴泛的应⽤,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。

本⽂主要介绍了关于Oracle中正则表达式的使⽤⽅法,下⾯话不多说了,来⼀起看看详细的介绍。

Oracle使⽤正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。

regexp_like该函数只能⽤于条件表达式,和 like 类似,但是使⽤的正则表达式进⾏匹配//查询所有包含⼩写字母或者数字的记录。

select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');regexp_substr该函数和 substr 类似,⽤于拾取合符正则表达式描述的字符⼦串,该函数的定义如下function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)- String 输⼊的字符串- pattern 正则表达式- position 标识从第⼏个字符开始正则表达式匹配。

(默认为1)- occurrence 标识第⼏个匹配组。

(默认为1)- modifier 取值范围:i:⼤⼩写不敏感;c:⼤⼩写敏感;n:点号 . 不匹配换⾏符号;m:多⾏模式;x:扩展模式,忽略正则表达式中的空⽩字符。

下⾯是⼀些实例--检索中间的数字SELECT REGEXP_SUBSTR(a,'[0-9]+') FROM test_reg_substr WHERE REGEXP_LIKE(a, '[0-9]+');--检索中间的数字(从第⼀个字母开始匹配,找第2个匹配项⽬)SELECT NVL(REGEXP_SUBSTR(a,'[0-9]+',1, 2), '-') AS a FROM test_reg_substrWHERE REGEXP_LIKE(a, '[0-9]+');regexp_instr该函数和 instr 类似,⽤于标定符合正则表达式的字符⼦串的开始位置,Oracle数据库中的REGEXP_INSTR函数的语法是REGEXP_INSTR (source_char, pattern [, position [, occurrence[, return_option [, match_parameter ] ] ] ] )- source_char 搜索值的字符表达式- pattern 正则表达式- position 可选。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档