在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;
明白原因的麻煩在下面評論謝謝!
From:http://tw.wingwit.com/Article/program/Oracle/201311/17033.html