oracle中的正则表达式(regular expression)

简介: 正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。

正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。

所谓正则表达式是对于字符串进行匹配的一种模式。举个例子来说字符串’^198[0-9]$’可以匹配‘1980-1989’,也即80后出生的年份。如果希望统计出公司那些员工是80后的,就可以使用如下的SQL语句:
select * from emp where regexp_like(to_char(birthdate,’yyyy’),’^198[0-9]$’);

这里用到了regexp_like和to_char函数。

这里在正则表达式中用到的^、$、[0-9]都被称为元数据(metacharacter),正则表达式都是由多元表达式组成的。在这里,^表示一个字符串的开头,$表示一个字符换的结尾,因此^198表示以198开头的字符串,而[0-9]$则表示以0-9的数字结尾的字符串。因此整体上’^198[0-9]$’就能匹配所有1980-1989的字符串。

正则表达式中常用到的元数据(metacharacter)如下:

  1. ^  匹配字符串的开头位置。
  2. $  匹配支付传的结尾位置。
  3. *  匹配该字符前面的一个字符0次,1次或者多次出现。例如52*oracle 可以匹配 5oracle,52oracle,522oracle,5222oracle等等。
  4. + 匹配该字符前面的一个字符1次或者多次出现。例如52+oracle 可以匹配 52oracle,522oracle,5222oracle等等
  5. ?  匹配该字符前面的一个字符0次或1次或者多次出现。例如52?oracle 只能匹配5oracle,52oracle等等
  6. {n} 匹配一个字符串n次,n为正整数。例如:hel{2}o 所匹配的是hello
  7. {n,m} 匹配一个字符串至少n次,至多m次。其中n和m都是整数。
  8. .  匹配除了null之外的任何单个字符串
  9. (pattern) 这个是用来匹配指定模式的一个子表达式
  10. x|y  匹配x或者y,其中x和y是一个或者多个字符
  11. [abc] 匹配括号中的任意一个字符。例如:[ab]bc可以匹配abc和bbc
  12. [a-z] 匹配指定范围内的任意字符串。例如[A-G]hi可以匹配Ahi至Ghi
  13. [::]指定一个字符类,可以匹配该类中的任意字符 这里的字符类包括:
    • [:alphanum:] 可以匹配字符0-9、A-Z、a-z
    • [:alpha:]可以匹配字符A-Z、a-z
    • [:blank:]可以匹配空格或者tab键
    • [:digit:]可以匹配数字 0-9
    • [:gragh:]可以匹配非空字符
    • [:punct:]可以匹配. , ” ‘等标点符号。
    • [:upper:]可以匹配字符A-Z
    • [:lower:]可以匹配字符a-z

这里列出的是一些常见的正则表达式中的元数据。更多的正则表达式的内容请参照oracle官网上的正则表达式的相关内容

关于orace中的正则表达式只能通过oracle特意为正则表达式设计的4个函数来使用。这4个函数分别是:
regexp_like,regexp_instr,regexp_replace,regexp_substr。关于这4个函数的具体用法,会在稍后介绍,这里简单说一下:

  1. regexp_like(x,pattern)当x能正确匹配字符串时返回true。
  2. regexp_instr(x,pattern)在x中尝试匹配pattern,并返回匹配的位置。
  3. regexp_replace(x,pattern,replacestring)在x中尝试匹配pattern,并将其替换成replacestring。
  4. regexp_substr(x,pattern)返回x中匹配pattern的一个字符串。
目录
相关文章
|
28天前
|
机器学习/深度学习 前端开发 Windows
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
【夯实技术基本功】「底层技术原理体系」全方位带你认识和透彻领悟正则表达式(Regular Expression)的开发手册(正则符号深入解析 )
32 0
|
3月前
|
JavaScript 前端开发 API
【JavaScript】<正则表达式Regular Expression>JavaScript正则表达式解析
【1月更文挑战第17天】【JavaScript】<正则表达式Regular Expression>JavaScript正则表达式解析
|
1月前
|
数据采集 Oracle 关系型数据库
Oracle系列之十:Oracle正则表达式
Oracle系列之十:Oracle正则表达式
|
2月前
|
安全
正则表达式(Regular Expression,简称regex或regexp)
正则表达式(Regular Expression,简称regex或regexp)
23 2
|
3月前
|
Python
Python正则表达式Regular Expression初探
Python正则表达式Regular Expression初探
35 0
|
3月前
|
Python
Python 的其他应用: 解释什么是正则表达式(Regular Expression)?在 Python 中如何使用正则表达式?
Python 的其他应用: 解释什么是正则表达式(Regular Expression)?在 Python 中如何使用正则表达式?
|
JavaScript
|
1月前
|
编译器 Python
Python正则表达式的7个使用典范(推荐)
Python正则表达式的7个使用典范(推荐)
24 0
|
1月前
|
Python
Python实现正则表达式匹配。
【2月更文挑战第11天】【2月更文挑战第30篇】Python实现正则表达式匹配。

推荐镜像

更多