Welcome 微信登录

首页 / 数据库 / MySQL / 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#VBJScript.
(?!)负声明。它规定模式不能紧临着声明的右侧。此模式不构成最终匹配的一部分d{3}(?![A-Z])要匹配的输入字符串为:123A 456 789111C将产生如下匹配:456789
(?<=)反向正声明。声明的左侧必须为括号内的指定模式。此模式不构成最终匹配的一部分正则表达式(?<=New)([A-Z][a-z]+)要匹配的输入字符串为:The following states,New Mexico,West Virginia,Washington, New England它将产生如下匹配:MexicoEngland
(?<!)反向正声明。声明的左侧必须不能是括号内的指定模式。此模式不构成最终匹配的一部分正则表达式(?<!1)d{2}([A-Z])要匹配的输入字符串如下:123A456F789C111A它将实现如下匹配:56F89C
(?>)非回溯组。防止Regex引擎回溯并且防止实现一次匹配假设要匹配所有以“ing”结尾的单词。输入字符串如下:He was very trusing正则表达式为:.*ing它将实现一次匹配――单词trusting。“.”匹配任意字符,当然也匹配“ing”。所以,Regex引擎回溯一位并在第2个“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing它将实现0次匹配。“.”能匹配所有的字符,包括“ing”――不能匹配,从而匹配失败
 .     决策字符注:上面表中列出的字符强迫处理器执行一次if-else决策.     替换字符注:以上为常用替换字符,不全.     转义序列 .     选项标志 本文永久更新链接地址