在oracle 11g中,當在正規表示式中用了中括號時,某些符號會匹配不了,如[\s\d],要用類似於[[:digit:][:blank:]]才能匹配成功,以下是我測試的例子:1--
中括號中的內容為一槓及空格([- ]),匹配成功,結果為:sa01-2345 6789 0123 4567 8900
2select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
3'sa\d[- ]\d[- ]\d[- ]\d[- ]\d[- ]\d|sa\d',
41, 1
,'i'
)) as
reg_str
from
dual;56
--中括號中的內容為([-[:blank:]]),匹配成功,結果為:sa01-2345 6789 0123 4567 8900
7select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
8'sa\d[-[:blank:]]\d[-[:blank:]]\d[-[:blank:]]\d[-[:blank:]]\d[-[:blank:]]\d|sa\d',
91, 1
,'i'
)) as
reg_str
from
dual;
1011
--如果將中括號換成小括號,匹配成功,結果為:sa01-2345 6789 0123 4567 8900
12select
to_char(regexp_substr(
'sa01 - 2345 6789 0123 4567 8900',
13'(sa)?\d(\s|-)\d(\s|-)\d(\s|-)\d(\s|-)\d(\s|-)\d|(sa)?\d',
141, 1
,'i'
)) as
reg_str
from
dual;
1516
--中括號中的內容為([-[:digit:][:blank:]]),匹配成功,結果為:sa01-2345 6789 0123 4567 8900
17select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
18'(sa)?[-[:digit:][:blank:]]',
191, 1
,'i'
)) as
reg_str
from
dual;
2021
--中括號中的內容為([-\d[:blank:]]),匹配失敗,結果為空
22select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
23'(sa)?[-\d[:blank:]]',
241, 1
,'i'
)) as
reg_str
from
dual;
2526
--中括號內容如下,匹配失敗,結果為空
27select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
28'(sa)?[-\d\s]',
291, 1
,'i'
)) as
reg_str
from
dual;
3031
--中括號內容如下,匹配失敗,結果為空
32select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
33'(sa)?[-\d ]',
341, 1
,'i'
)) as
reg_str
from
dual;
3536
--中括號中的內容為([-\s]),匹配失敗,結果為空
37select
to_char(regexp_substr(
'sa01-2345 6789 0123 4567 8900',
38'sa\d[-\s]\d[-\s]\d[-\s]\d[-\s]\d[-\s]\d|sa\d',
391, 1
,'i'
)) as
reg_str
from
dual;
oracle 正規表示式
with temp as select br.777 1 a from dual union all select bs.6 175 a from dual union all select d.140 supplement 1 a from dual union all select e.191 ...
oracle正規表示式
在資料庫可直接執行下面語句,但在程式中不能執行,regexp like t.ipaddress,25 0 5 2 0 4 0 9 01 0 9 0 9 25 0 5 2 0 4 0 9 01 0 9 0 9 報錯有特殊字元 在句末再加乙個 改為 regexp like t.ipaddress,25 ...
oracle正規表示式
oracle 10g支援正規表示式的四個新函式分別是 regexp like regexp instr regexp substr 和regexp replace。它們使用posix 正規表示式代替了老的百分號 和萬用字元 字元。特殊字元 匹配輸入字串的開始位置,在方括號表示式中使用,此時它表示不接...