1. 元字符说明

元字符 含义
^ 匹配输入字符串的开始位置。
$ 匹配输入字符串的结尾位置。
* 匹配前面的字符零次或多次。
+ 匹配前面的字符一次或多次。
? 匹配前面的字符零次或一次。
. 匹配任何字符,除了空.
| 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
[ ] 用于指定要在其中尝试匹配列表中任何一个字符的匹配列表。
[^ ] 用于指定一个不匹配列表,要尝试匹配除列表中的字符之外的任何字符。
[…] 接受括号中的任一字符
[^…] 不接受括号中的任一字符
( ) 标记一个子表达式的开始和结束位置(字符组)。
{m} 正好匹配   m 次
{m,} 至少匹配   m 次
{m,n} 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。
[..]  匹配一个可以是多个字符的排序规则元素。
[::] 匹配字符类。
[==] 匹配等价类。
\n n是1和9之间的数字。匹配在遇到\n之前在()中找到的第n个子表达式。
\d 匹配一个数字字符.
\D 匹配一个非数字字符.
\w 匹配包括下划线的任何单词字符.
\W 匹配任何非单词字符.
\s 任一空白字符,包括制表符,换行符,回车符,换页符和垂直制表符
\S 匹配任何非空白字符.
\A 前面的模式必须位于字符串的开始位置,忽略多行标志
\Z 前面的模式必须位于字符串的未端,或者位于一个换行符前
*?  与前前面的模式匹配零个或多个匹配项。
+? 匹配前面一个模式一次或多次。
?? 匹配前面一个模式零或一个发生。
{n}? 匹配前面的模式n次。
{n,}? 与前一个模式匹配至少n次
{n,m}? 与前一个模式匹配至少n次,但不超过m次。

2. oracle正则表达式的4个函数

  (1) regexp_like

    1) 语法

      REGEXP_LIKE ( expression, pattern [, match_parameter ] )

    2) 参数说明

      expression:字符表达式

      pattern:正则表达式

      match_parameter:可选的。它允许修改REGEXP_LIKE条件的匹配行为。它可以是以下的组合:

描述
'c' 执行区分大小写匹配。
'i' 执行不区分大小写的匹配。
'n' 允许句点字符(.)与换行符匹配。 默认情况下,句点是通配符。
'm' 表达式假定有多个行,其中^是行的开始,$是行的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单行。
'x' 忽略空格字符。默认情况下,空格字符与任何其他字符一样匹配。

    3) 示例

--与like的功能类似
select * from fzq where regexp_like(value,'1....60');

  (2) regexp_substr

    1) 语法

      regexp_substr(source_string,pattern[,position[,occurrence[,match_parameter]]])

    2) 参数说明

      source_string:源串,可以是常量,也可以是某个值类型为串的列。

      pattern:正则表达式

      position:从源串开始搜索的位置。默认为1。

      occurrence:指定源串中的第几次出现。默认值1.

      match_parameter:省略该参数时:默认区分大小写、句点不匹配换行符、源串被看作一行。

说明
i'     用于不区分大小写的匹配。
c' 用于区分大小写的匹配。
n' 允许将句点“.”作为通配符来匹配换行符。如果省略改参数,句点将不匹配换行符。
m'  将源串视为多行。即将“^”和“$”分别看做源串中任意位置任意行的开始和结束,而不是看作整个源串的开始或结束。

    3) 示例

SELECT REGEXP_SUBSTR ('hello my phone is 520 ', '[0-9]+') FROM dual; --520

  (3) regexp_instr

    1) 语法

      regexp_instr(source_string,pattern[,position[,occurrence[,return_option[,match_parameter]]]])

    2) 参数说明

      source_string:源串,可以是常量,也可以是某个值类型为串的列。

      pattern:正则表达式

      position:可选。搜索在字符串中的开始位置。如果省略,则默认为1,这是字符串中的第一个位置。

      occurrence:可选。它是模式字符串中的第n个匹配位置。如果省略,默认为1。

      return_option:可选 指定Oracle返回的位置。如果指定0,那么Oracle将返回出现的第一个字符的位置。这是默认的。如果指定1,则Oracle返回字符之后发生的位置。

      match_parameter:可选。它允许你修改REGEXP_INSTR功能匹配的行为。它可以是以下的组合:

描述
'c' 执行区分大小写匹配。
'i' 执行不区分大小写的匹配。
'n' 允许句点字符(.)与换行符匹配。 默认情况下,句点是通配符。
'm' 表达式假定有多个行,其中^是行的开始,$是行的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单行。
'x' 忽略空格字符。默认情况下,空格字符与任何其他字符一样匹配。

    3) 示例

SELECT REGEXP_INSTR ('Itmyhome', 'a|i|o|e|u')
FROM dual;-- Result: 6

  (4) regexp_replace

    1) 语法

      regexp_replace(source_string,pattern[,replace_string[,position[,occurrence[,match_parameter]]]])

    2) 参数说明

      source_string:源串,可以是常量,也可以是某个值类型为串的列。

      pattern:正则表达式

      replace_string:可选。匹配的模式将被替换replace_string字符串。如果省略replace_string参数,将删除所有匹配的模式,并返回结果字符串。

      position:可选。在字符串中的开始位置搜索。如果省略,则默认为1。

      occurrence:可选。是一个非负整数默认为1,指示替换操作的发生:如果指定0,那么所有出现将被替换字符串。如果指定了正整数n,那么将替换第n次出现。

      match_parameter:可选。它允许你修改REGEXP_REPLACE功能匹配的行为。它可以是以下的组合:

描述
'c' 执行区分大小写匹配。
'i' 执行不区分大小写的匹配。
'n' 允许句点字符(.)与换行符匹配。 默认情况下,句点是通配符。
'm' 表达式假定有多个行,其中^是行的开始,$是行的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单行。
'x' 忽略空格字符。默认情况下,空格字符与任何其他字符一样匹配。

    3) 示例   

SELECT REGEXP_REPLACE ('itmyhome is my network id', '^(\S*)', 'luck')
FROM dual;Result: luck is my network id

转载于:https://www.cnblogs.com/zhuhaiying/p/9842213.html

【SQL查询】正则表达式匹配字符串相关推荐

  1. python正则匹配字符串中的数字_Python正则表达式匹配字符串中的数字

    1.使用"\d+"匹配全数字 代码: import re zen = "Arizona 479, 501, 870. Carlifornia 209, 213, 650. ...

  2. python正则匹配11个数字_Python正则表达式匹配字符串中的数字

    导读 这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 ...

  3. python正则表达式匹配字符串中的电话号码_Python正则表达式匹配字符串中的数字...

    这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 代码: ...

  4. Python正则表达式匹配字符串中的数字

    导读 这篇文章主要介绍了Python正则表达式匹配字符串中的数字,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 1.使用"\d+"匹配全数字 ...

  5. 正则表达式匹配字符串(scala)

    正则表达式匹配字符串 代码 import scala.util.matching.Regexobject RegDemo extends App{//构建正则表达式//方式一val pattern1= ...

  6. 正则表达式匹配字符串中以数字结尾的字符

    正则表达式匹配字符串中以数字结尾的字符 <li class="xxx"><a href="http://www.xxx.net/abc90.htm&qu ...

  7. C#中使用正则表达式匹配字符串

    C#中使用正则表达式匹配字符串的方法如下: 1.使用System.Text.RegularExpressions命名空间: 2.使用Matches()方法匹配字符串,格式如下: MatchCollec ...

  8. python-利用正则表达式匹配字符串

    python正则表达式相关的模块是re 该模块有几个常用的方法 re.compile() 生成一个正则对象 re.match().group() 根据正则表达式匹配字符串,如果不是从字符串首位匹配的, ...

  9. python正则表达式匹配字符串相关方法

    python正则表达式匹配字符串相关方法 一.匹配方法简要介绍及注意事项 1.贪婪匹配与非贪婪匹配 2.findall与search的选取问题 3.匹配时"()"和"[] ...

  10. java正则表达式匹配字符串_java正则表达式如何匹配字符串

    java正则表达式匹配字符串的方法:使用tostring,代码为[while(matcher.find()){tmp.add(matcher.group(1).toString());}]. java ...

最新文章

  1. SpringMvc+ajax实现文件跨域上传
  2. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解
  3. mysql 生产实践_mysql-主从复制
  4. 用 HTTPS 就安全了?HTTPS 会被抓包吗?
  5. .net 怎么使用github_如何正确的使用ncnn的Extractor
  6. halcon相机标定及图像矫正(代码)
  7. signal软件如何退出账号_超好用的手机视频剪辑软件Videoleap内购分享
  8. 因kuaipan等PPA造成的Duplicate sources.list entry 错误
  9. eclipse/myeclipse添加插件3种方式
  10. iOS一个简单的设置圆角不引起性能问题的分类
  11. Windows Linux Mac 路由添加删除
  12. C++的学习(十)类和对象
  13. 电路中常用的拉普拉斯变换
  14. 【Java编程】模拟帐户存取和转账操作
  15. BigDecimal加减乘除计算
  16. PS小技巧----1寸、2存照片制作
  17. Exchange的邮箱创建与使用
  18. CF11A Increasing Sequence(C++)
  19. Dell清除BIOS密码及硬盘锁
  20. 北大博士唐大仕推荐C#学习网站

热门文章

  1. 点击事件触发mouseleave事件
  2. python之类的封装
  3. php股票价格实时刷新,使用ajax技术无刷新动态调用新浪股票实时数据
  4. 由浅入深了解 FastDFS 分布式文件系统
  5. android安全基础知识学习
  6. Pytorch修改模型参数的方法
  7. 如何捕获一个Activity页面上所有的点击行为?
  8. 刷爆LeetCode之旋转数组
  9. 【暴料】医学院校的搞笑标语~~
  10. 我能创未来——中国青年创业行动