• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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_substr 
    WHERE 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,这是字符串中的第一个位置。
     - occurrence 可选。它是模式字符串中的第n个匹配位置。如果省略,默认为1。 
     - return_option 可选 指定Oracle返回的位置,
      0那么Oracle将返回出现的第一个字符的位置。这是默认的,
      1则Oracle返回字符之后发生的位置。
     - match_parameter 取值范围:
      i:大小写不敏感;
      c:大小写敏感;
      n:点号 . 不匹配换行符号;
      m:多行模式;
      x:扩展模式,忽略正则表达式中的空白字符。

    下面是一些实例

    --找到字符串中的第一个”e”字的位置
    --返回2
    SELECT REGEXP_INSTR ('hello itmyhome', 'e') FROM dual; 
    --“1”为开始位置 “2”是搜索第二个匹配的,”0”是return_option 
    --返回出现的第一个字符位置“c”是区分大小写 ,所以将返回13
    SELECT REGEXP_INSTR ('my is itMyhome', 'm', 1, 2, 0, 'c') FROM dual;
    --
    SELECT REGEXP_INSTR ('World filled with love', 'with', 1, 1, 0, 'i') FROM dual;
    --匹配多个备选
    SELECT REGEXP_INSTR ('Itmyhome', 'a|i|o|e|u') FROM dual;

    regexp_replace

    该函数和 replace 类似,用于替换符合正则表达式的字符串,Oracle数据库中的REGEXP_REPLACE函数的语法是

    REGEXP_REPLACE(source_char, pattern [, replace_string 
     [, position [, occurrence [, match_parameter ] ] ] ])
     - source_char 搜索值的字符表达式
     - pattern 正则表达式
     - replace_string 可选。匹配的模式将被替换replace_string字符串。
     如果省略replace_string参数,将删除所有匹配的模式,并返回结果字符串。
     - position 可选。在字符串中的开始位置搜索。如果省略,则默认为1。
     - occurrence 它是模式字符串中的第n个匹配位置。如果省略,默认为1。
     - match_parameter
     i:大小写不敏感;
     c:大小写敏感;
     n:点号 . 不匹配换行符号;
     m:多行模式;
     x:扩展模式,忽略正则表达式中的空白字符。

    如下是一些实例

    --字符串替换
    --luck is my network id
    SELECT REGEXP_REPLACE ('itmyhome is my network id', '^(\S*)', 'luck') FROM dual;
    --此示例将所指定的\d数字将以#字符替换
    --Result: '#, #, and ## are numbers in this example'
    SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '\d', '#') FROM dual;

    总结

    以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • Oracle通过正则表达式分割字符串 REGEXP_SUBSTR的代码详解
    • Oracle 正则表达式实例详解
    • ORACLE数据库中怎么求除数字、字母之外的非中文字符的正则表达式
    • oracle正则表达式regexp_like的用法详解
    • Oracle正则表达式使用介绍
    • Oracle 10G:PL/SQL正规表达式(正则表达式)手册
    • ORACLE 正则解决初使化数据格式不一致
    • Oracle数据库正则表达式使用场景代码实例
    上一篇:oracle数据库ORA-01196错误解决办法分享
    下一篇:解决Oracle RMAN删除归档日志不释放问题的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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