Oracle数据库正则表达式简单例子_Oracle数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

Oracle正则表达式简单例子

作者:黑客防线网安Oracle维护基地 来源:黑客防线网安Oracle维护基地 浏览次数:0

本篇关键词:Oracle数据库Oracle教程
黑客防线网安网讯:    1. 非贪婪模式? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹...

    1. 非贪婪模式
? 当该字符紧跟在任何一个其他限制符(*,+,?{n}{n,},{n,m})后面时,匹配模式是非贪婪的非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串例如,对于字符串“oooo”,“o+?”将匹配单个“o”,而“o+”将匹配所有“o”。
2.
(?:pattern) 匹配pattern但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用或字符“(|)”来组合一个模式的各个部分是很有用。例如“industr(?:y|ies)”就是一个比“industry|industries”更简略的表达式。
(?=pattern) 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern) 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如“Windows(?!95|98|NT|2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始
3.
 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。
B 匹配非单词边界。“erB”能匹配“verb”中的“er”,但不能匹配“never”中的“er”。
4. Oracle11g正则表达式
 
 
Match Options 
Character Class Description
c Case sensitive matching
i Case insensitive matching
m Treat source string as multi-line activating Anchor chars
n Allow the period (.) to match any newline character

Posix Characters 
Character Class Description
[:alnum:] Alphanumeric characters
[:alpha:] Alphabetic characters
[:blank:] Blank Space Characters
[:cntrl:] Control characters (nonprinting)
[:digit:] Numeric digits
[:graph:] Any [:punct:], [:upper:], [:lower:], and [:digit:] chars
[:lower:] Lowercase alphabetic characters
[:print:] Printable charactersa
[:punct:] Punctuation characters
[:space:] Space characters (nonprinting), such as carriage return, newline, vertical tab, and form feed
[:upper:] Uppercase alphabetic characters
[:xdigit:] Hexidecimal characters
 
Oracle 正则例子 11g:
1. REGEXP_SUBSTR:在字段Content_Text中,从第Offset位置开始匹配(参数Offset ),不区分大小写(参数 i ),符合正则表达式的第1个匹配字符串(参数1)赋给URL:
select to_char(REGEXP_SUBSTR(Content_Text,'(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www.))+(([a-zA-Z0-9._-]+.[a-zA-Z]{2,6})|([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}))(/[a-zA-Z0-9&'||'%_./-~-]*)?', Offset, 1,'i'))
into URL from article_detail where article_detail_id=article_detail_id_$;
其它例子:最后4个参数(1,1,'i',1)说明:第一个1表示从第一个字符开始匹配,第二个1表示第1个符合匹配的字符串,i表示不区分大小写,第三个1表示第1个子表达式。下面例子的结果返回:rac
SELECT REGEXP_SUBSTR('500 Oracle Parkway, Redwood Shores, CA', '[o]([[:alpha:]]{3})',1,1,'i',1) RESULT FROM dual;
2. REGEXP_INSTR:在字段Content_Text中,从第Offset位置开始匹配(参数Offset ),不区分大小写(参数 i ),符合正则表达式的第1个匹配字符串(第一个参数1),匹配字符串匹配后的第1个字符(第二个参数1, 0表示匹配字符串的第一个字符的位置)的位置赋给Offset.
select REGEXP_INSTR(Content_Text, 'w*:*/*/*([_a-zd-]+(.[_a-zd-]+)+)((/[ _a-zd-\.]+)+)*', Offset, 1, 1,'i')
into Offset from article_detail where article_detail_id=article_detail_id_1;
其它例子1:黄色背景表示匹配的字符串,绿色的字符表示返回此字符的位置。下面第一个例子参数(1, 1, 0)的意思是:第一个1表示从第1个字符开始,第二个1表示匹配成功的第1个字符串,0表示从匹配字符串的首字符算起。
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 1, 0, 'i') RESULT
FROM dual;
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 1, 1, 'i') RESULT
FROM dual;
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 2, 0, 'i') RESULT
FROM dual;
SELECT REGEXP_INSTR('500 Oracle Pkwy, Redwood Shores, CA', '[o][[:alpha:]]{3}', 1, 2, 1, 'i') RESULT
FROM dual;
其它例子2:
--最后一个参数表示第一个子表达式,结果返回0(没匹配到)
SELECT REGEXP_INSTR('abcde', 'ab', 1, 1, 0, 'i', 1) Result FROM dual;
--最后一个参数表示第一个子表达式,结果返回2(b的位置)
SELECT REGEXP_INSTR('abcde', 'a(b)', 1, 1, 0, 'i', 1) Result FROM dual;
--最后一个参数表示第二个子表达式,结果返回3(c的位置)
SELECT REGEXP_INSTR('abcde', 'a(b)(c)', 1, 1, 0, 'i', 2) Result FROM dual;
3. REGEXP_REPLACE,REGEXP_LIKE,REGEXP_COUNT
--在小写与大写之间加个空隔
SELECT REGEXP_REPLACE('HongKong', '([[:lower:]])([[:upper:]])', '1 2') Result FROM dual;
--查找表Article_Detail字段Content中包含a或z的记录
SELECT * FROM Article_Detail WHERE REGEXP_LIKE(Content, '([az])1', 'i');
--符合正则表达式字符串的个数
SELECT REGEXP_COUNT(Content, '2a', 1, 'i') Result FROM Article_Detail;
 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-13108-1.html
网站维护教程更新时间:2012-03-23 00:50:32  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer