REGEXP_SUBSTR:需要更精确的正则表达式代码

时间:2018-03-26 21:12:23

标签: regex oracle oracle11g regexp-substr

我正在尝试找到一种方法,让一个正则表达式代码只能在之前获得5位数。(点)。 我已经尝试了很多东西,似乎无法获得99999 ......我想这样做没有添加任何其他参数。

SELECT regexp_substr('ffffffff-5fd1-456b-8f4c-4a6ecc3b7cba::11899999.99', '[118]\d+') 
  FROM DUAL;

我现在得到1189999,当我做[118] \ d {5}'或'[118] \ d {5} +'时得到118999 ......

帮助......请...谢谢。

1 个答案:

答案 0 :(得分:3)

您可以在点前捕获5位数字:

regexp_substr('ffffffff-5fd1-456b-8f4c-4a6ecc3b7cba::11899999.99', '(\d{5})\.', 1, 1, NULL, 1)

请参阅Oracle demo

enter image description here

(\d{5})是一个匹配5个连续数字的捕获组,并将值存储在组1中,而\.只匹配一个点(作为上下文)。 regexp_substr函数的最后一个参数是捕获组的编号(这里是唯一的第一个参数)。