要获得您期望的输出,您不需要使用正则表达式。您可以使用一个简单的REPLACE 将/ 替换为一个空格,然后从字符串的末尾修剪所有空格。
SQL> SELECT TRIM (REPLACE ('/D 1/D 18/15/1000', '/', ' ')) AS sample_data FROM DUAL;
SAMPLE_DATA
___________________
D 1 D 18 15 1000
SQL> SELECT TRIM (REPLACE ('/D 1/D 18/15', '/', ' ')) AS sample_data FROM DUAL;
SAMPLE_DATA
______________
D 1 D 18 15
更新
根据 cmets 中的信息,应将值拆分为单独的列。下面的正则表达式可用于通过使用/ 作为分隔符进行拆分来获取不同的值。
SQL> WITH sample_data AS (SELECT '/D 1/D 18/15/1000' AS sample_col FROM DUAL)
2 SELECT regexp_substr(sample_col, '[^/]+',1,1) as col1,
3 regexp_substr(sample_col, '[^/]+',1,2) as col2,
4 regexp_substr(sample_col, '[^/]+',1,3) as col3,
5 regexp_substr(sample_col, '[^/]+',1,4) as col4,
6 regexp_substr(sample_col, '[^/]+',1,5) as col5
7 FROM sample_data;
COL1 COL2 COL3 COL4 COL5
_______ _______ _______ _______ _______
D 1 D 18 15 1000
SQL> WITH sample_data AS (SELECT '/D 1/D 18/15' AS sample_col FROM DUAL)
2 SELECT regexp_substr(sample_col, '[^/]+',1,1) as col1,
3 regexp_substr(sample_col, '[^/]+',1,2) as col2,
4 regexp_substr(sample_col, '[^/]+',1,3) as col3,
5 regexp_substr(sample_col, '[^/]+',1,4) as col4,
6 regexp_substr(sample_col, '[^/]+',1,5) as col5
7 FROM sample_data;
COL1 COL2 COL3 COL4 COL5
_______ _______ _______ _______ _______
D 1 D 18 15