我有一个大致类似的字符串:
XXXXXXXXX - 1234567 XXXXXXXX ,
其中X可以是数字,字符串或符号(<,> ,.或space)。
我需要在'之后提取这些数字。 - '。
我试过以下:
select regexp_substr('17.12.12 <XXXXXXXXXX> - 1234567 <XXXXXXXXXX>','(- )[0-9]{1,7}') from dual
我最终得到了- 1234567
。
如何摆脱'- '
?
提前谢谢
答案 0 :(得分:1)
这适用于Oracle 11g。
首先将捕获组放在您感兴趣的图案部分周围。由于您需要数字,请使用捕获括号包裹[0-9]{1,7}
。
然后,将所有6个参数传递给REGEXP_SUBSTR
函数,其中第6个参数指示要提取的捕获组的数量:
select regexp_substr('17.12.12 <XXXXXXXXXX> - 1234567 <XXXXXXXXXX>',' - ([0-9]{1,7})', 1,1,NULL,1) from dual
此处,1,1,NULL,1
表示:从第1位开始寻找模式匹配,仅用于第一次匹配,没有特定的正则表达式选项,并返回第1组的内容。
答案 1 :(得分:0)
@Gordon Linoff试图说的是:
select substr(regexp_substr('17.12.12 <XXXXXXXXXX> - 1234567 <XXXXXXXXXX>','(- )[0-9]{1,7}'), 3)
from dual
预留剩余的&#34; - &#34;你的结果。