数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle正则表达式中注意的问题


发布日期:2020年10月09日
 
Oracle正则表达式中注意的问题

在Oracle g中当在正则表达式中用了中括号时某些符号会匹配不了如[\s\d]要用类似于[[:digit:][:blank:]]才能匹配成功以下是我测试的例子

中括号中的内容为一槓及空格([ ])匹配成功结果为:SA

SELECT to_char(REGEXP_SUBSTR(SA

SA\d{}[ ]\d{}[ ]\d{}[ ]\d{}[ ]\d{}[ ]\d{}|SA\d{}

i)) as Reg_Str FROM dual;

中括号中的内容为([[:blank:]])匹配成功结果为:SA

SELECT to_char(REGEXP_SUBSTR(SA

SA\d{}[[:blank:]]\d{}[[:blank:]]\d{}[[:blank:]]\d{}[[:blank:]]\d{}[[:blank:]]\d{}|SA\d{}

i)) as Reg_Str FROM dual;

如果将中括号换成小括号匹配成功结果为:SA

SELECT to_char(REGEXP_SUBSTR(SA

(SA)?\d{}(\s|)\d{}(\s|)\d{}(\s|)\d{}(\s|)\d{}(\s|)\d{}|(SA)?\d{}

i)) as Reg_Str FROM dual;

中括号中的内容为([[:digit:][:blank:]])匹配成功结果为:SA

SELECT to_char(REGEXP_SUBSTR(SA

(SA)?[[:digit:][:blank:]]{}

i)) as Reg_Str FROM dual;

中括号中的内容为([\d[:blank:]])匹配失败结果为空

SELECT to_char(REGEXP_SUBSTR(SA

(SA)?[\d[:blank:]]{}

i)) as Reg_Str FROM dual;

中括号内容如下匹配失败结果为空

SELECT to_char(REGEXP_SUBSTR(SA

(SA)?[\d\s]{}

i)) as Reg_Str FROM dual;

中括号内容如下匹配失败结果为空

SELECT to_char(REGEXP_SUBSTR(SA

(SA)?[\d ]{}

i)) as Reg_Str FROM dual;

中括号中的内容为([\s])匹配失败结果为空

SELECT to_char(REGEXP_SUBSTR(SA

SA\d{}[\s]\d{}[\s]\d{}[\s]\d{}[\s]\d{}[\s]\d{}|SA\d{}

i)) as Reg_Str FROM dual;

明白原因的麻烦在下面评论谢谢!

               

上一篇:Oracle数据库视图管理经验技巧

下一篇:Oracle中如何直接运行OS命令(上)