您好,欢迎访问一九零五行业门户网

Oracle 正则表达式

regexp_instr(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])函数(10g新函数)描
分组字符
定义
举例
()
此字符可以组合括号内模式所匹配的字符,它是一个捕获组,也就是说模式匹配的字符作为最终设置了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
但是没有组被捕获
(?)
此选项组合括号内模式所匹配的字符,并用尖括号中指定的值为组命名。在正则表达式中,可以使用名称进行反向引用,而不必使用编号。即使不设置explicitcapture选项,它也是一个捕获组。这意味着反向引用可以利用组内匹配的字符,或者通过group类访问
输入字符串为:characters in sienfeld included jerry seinfeld,elaine benes,cosno kramer and george costanza能够匹配它们的姓名,并在一个组llastname中捕获姓的正则表达式为:\b[a-z][a-z]+ (?[a-z][a-z]+)\b
它产生了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
(?
反向正声明。声明的左侧必须为括号内的指定模式。此模不构成最终匹配的一部分
正则表达式(?
它将产生如下匹配:
mexico
england
(?
反向正声明。声明的左侧必须不能是括号内的指定模式。此模式不构成最终匹配的一部分
正则表达式(?
它将实现如下匹配:
56f
89c
(?>)
非回溯组。防止regex引擎回溯并且防止实现一次匹配
假设要匹配所有以“ing”结尾的单词。输入字符串如下:he was very trusing
正则表达式为:.*ing
它将实现一次匹配――单词trusting。“.”匹配任意字符,当然也匹配“ing”。所以,regex引擎回溯一位并在第2个“t”停止,然后匹配指定的模式“ing”。但是,如果禁用回溯操作:(?>.*)ing
它将实现0次匹配。“.”能匹配所有的字符,包括“ing”――不能匹配,从而匹配失败
其它类似信息

推荐信息