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

     

  • 相关阅读:
    与众不同 windows phone (50)
    与众不同 windows phone (49)
    重新想象 Windows 8.1 Store Apps (93)
    重新想象 Windows 8.1 Store Apps 系列文章索引
    重新想象 Windows 8.1 Store Apps (92)
    重新想象 Windows 8.1 Store Apps (91)
    重新想象 Windows 8.1 Store Apps (90)
    重新想象 Windows 8.1 Store Apps (89)
    重新想象 Windows 8.1 Store Apps (88)
    重新想象 Windows 8.1 Store Apps (87)
  • 原文地址:https://www.cnblogs.com/pengineer/p/4526047.html
Copyright © 2011-2022 走看看