zoukankan      html  css  js  c++  java
  • SQL 中的正则函数

    ORACLE中支持正则表达式的函数主要有下面四个:
    1,REGEXP_LIKE :与LIKE的功能相似,比LIKE强大得多。
    2,REGEXP_INSTR :与INSTR的功能相似。
    3,REGEXP_SUBSTR :与SUBSTR的功能相似。
    4,REGEXP_REPLACE :与REPLACE的功能相似。

    REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter)函数(10g新函数)
    描述:字符串替换函数。相当于增强的replace函数。Source_string指定源字符表达式;pattern指定规则表达式;replace_string指定用于替换的字符串;position指定起始搜索位置;occurtence指定替换出现的第n个字符串;match_parameter指定默认匹配操作的文本串。ITPUB个人空间.x mz n`r­g9[1`
       其中replace_string,position,occurtence,match_parameter参数都是可选的。

    REGEXP_SUBSTR(source_string, pattern[,position [, occurrence[, match_parameter]]])函数(10g新函数)
    描述:返回匹配模式的子字符串。相当于增强的substr函数。Source_string指定源字符表达式;pattern指定规则表达式;position指定起始搜索位置;occurtence指定替换出现的第n个字符串;match_parameter指定默认匹配操作的文本串。
       其中position,occurtence,match_parameter参数都是可选的。

    match_option的取值如下:
      'c'   说明在进行匹配时区分大小写(缺省值);
      'i'    说明在进行匹配时不区分大小写;
      'n'   允许使用可以匹配任意字符的操作符;
      'm'   将x作为一个包含多行的字符串。

    REGEXP_LIKE(source_string, pattern[, match_parameter])函数(10g新函数)
    描述:返回满足匹配模式的字符串。相当于增强的like函数。Source_string指定源字符表达式;pattern指定规则表达式;match_parameter指定默认匹配操作的文本串。
       其中position,occurtence,match_parameter参数都是可选的。

    REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])函数(10g新函数)
    描述: 该函数查找 pattern ,并返回该模式的第一个位置。您可以随意指定您想要开始搜索的 start_position。 occurrence 参数默认为 1,除非您指定您要查找接下来出现的一个模式。return_option 的默认值为 0,它返回该模式的起始位置;值为 1 则返回符合匹配条件的下一个字符的起始位置。

     

    .     匹配字符

     

    .     重复字符

     

    .     定位字符

     

    注:定位字符可以应用于字符或组合,放在字符串的左端或右端

    .     分组字符

    分组字符

     

     

    ()

    此字符可以组合括号内模式所匹配的字符,它是一个捕获组,也就是说模式匹配的字符作为最终设置了ExplicitCapture选项――默认状态下字符不是匹配的一部分

    输入字符串为:ABC1DEF2XY

    匹配3个从A到Z的字符和1个数字的正则表达式:([A-Z]{3}d)

    将产生两次匹配:Match 1=ABC1;Match 2=DEF2

    每次匹配对应一个组:Match1的第一个组=ABC;Match2的第1个组=DEF

    有了反向引用,就可以通过它在正则表达式中的编号以及C#和类Group,GroupCollection来访问组。如果设置了ExplicitCapture选项,就不能使用组所捕获的内容

    (?:)

    此字符可以组合括号内模式所匹配的字符,它是一个非捕获组,这意味着模式所的字符将不作为一个组来捕获,但它构成了最终匹配结果的一部分。它基本上与上面的组类型相同,但设定了选项ExplicitCapture

    输入字符串为:1A BB SA1 C

    匹配一个数字或一个A到Z的字母,接着是任意单词字符的正则表达式为:(?:d|[A-Z]w)

    它将产生3次匹配:每1次匹配=1A;每2次匹配=BB;每3次匹配=SA

    但是没有组被捕获

    (?<name>)

    此选项组合括号内模式所匹配的字符,并用尖括号中指定的值为组命名。在正则表达式中,可以使用名称进行反向引用,而不必使用编号。即使不设置ExplicitCapture选项,它也是一个捕获组。这意味着反向引用可以利用组内匹配的字符,或者通过Group类访问

    输入字符串为:Characters in Sienfeld included Jerry Seinfeld,Elaine Benes,Cosno Kramer and George Costanza能够匹配它们的姓名,并在一个组llastName中捕获姓的正则表达式为:[A-Z][a-z]+(?<lastName>[A-Z][a-z]+)

    它产生了4次匹配:First Match=Jerry Seinfeld; Second Match=Elaine Benes; Third Match=Cosmo Kramer; Fourth Match=George Costanza

    每一次匹配都对应了一个lastName组:

    第1次匹配:lastName group=Seinfeld

    第2次匹配:lastName group=Benes

    第3次匹配:lastName group=Kramer

    第4次匹配:lastName group=Costanza

    不管是否设置了选项ExplictCapture,组都将被捕获

    (?=)

    正声明。声明的右侧必须是括号中指定的模式。此模式不构成最终匹配的一部分

    正则表达式S+(?=.NET)要匹配的输入字符串为:The languages were Java,C#.NET,VB.NET,C,Jscript.NET,Pascal

    将产生如下匹配:〕

    C#

    VB

    JScript.

    (?!)

    负声明。它规定模式不能紧临着声明的右侧。此模式不构成最终匹配的一部分

    d{3}(?![A-Z])要匹配的输入字符串为:123A 456 789111C

    将产生如下匹配:

    456

    789

    (?<=)

    反向正声明。声明的左侧必须为括号内的指定模式。此模式不构成最终匹配的一部分

    正则表达式(?<=New)([A-Z][a-z]+)要匹配的输入字符串为:The following states,New Mexico,West Virginia,Washington, New England

    它将产生如下匹配:

    Mexico

    England

    (?<!)

    反向正声明。声明的左侧必须不能是括号内的指定模式。此模式不构成最终匹配的一部分

    正则表达式(?<!1)d{2}([A-Z])要匹配的输入字符串如下:123A456F789C111A

    它将实现如下匹配:

    56F

    89C

    (?>)

    非回溯组。防止Regex引擎回溯并且防止实现一次匹配

    假设要匹配所有以“ing”结尾的单词。输入字符串如下:He was very trusing

    正则表达式为:.*ing

    它将实现一次匹配――单词trusting。“.”匹配任意字符,当然也匹配“ing”。所以,Regex引擎回溯一位并在第2个“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing

    它将实现0次匹配。“.”能匹配所有的字符,包括“ing”――不能匹配,从而匹配失败

     

    .     决策字符

    注:上面表中列出的字符强迫处理器执行一次if-else决策

    .     替换字符

    注:以上为常用替换字符,不全

    .     转义序列

     

    .     选项标志

     

     参考:http://www.cnblogs.com/gkl0818/archive/2009/02/12/1389521.html

     

  • 相关阅读:
    ASP抽取数据的执行效率(转)
    gridview中onmouseover的效果
    ASP中类的调用(转)
    PHP 类 的使用[实例讲解]
    常用PHP编辑器介绍
    cookies的存入
    如何为gridview控件里的“删除”列添加一个确认对话框?
    windows下忘记mysql超级管理员root密码的解决办法(转)
    记Visual Studio 2010一次令人崩溃的经历
    sql server 2005系统视图sys.sysobjects和sys.all_objects,sys.objects,三者之间有什么区别?
  • 原文地址:https://www.cnblogs.com/pengineer/p/4526047.html
Copyright © 2011-2022 走看看