在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;
明白原因的麻烦在下面评论谢谢!