REGEXP_SUBSTR: 需要更精确的正则表达式代码
REGEXP_SUBSTR: Need more precise regex code
我正在尝试找到一种方法,让一个正则表达式代码只获取 .(点)之前的 5 位数字。
我已经尝试了很多东西,但似乎无法获得 99999...我想这样做而不 添加任何其他参数。
SELECT regexp_substr('ffffffff-5fd1-456b-8f4c-4a6ecc3b7cba::11899999.99', '[118]\d+')
FROM DUAL;
我目前得到 1189999,当我执行 '[118]\d{5}' 或 '[118]\d{5}+' 时已经得到 118999...
帮助...请...谢谢。
您可以捕获点前的 5 位数字:
regexp_substr('ffffffff-5fd1-456b-8f4c-4a6ecc3b7cba::11899999.99', '(\d{5})\.', 1, 1, NULL, 1)
参见Oracle demo。
(\d{5})
是一个捕获组,匹配5个连续的数字并将值存储在组1中,而\.
只是匹配一个点(作为上下文)。 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...
帮助...请...谢谢。
您可以捕获点前的 5 位数字:
regexp_substr('ffffffff-5fd1-456b-8f4c-4a6ecc3b7cba::11899999.99', '(\d{5})\.', 1, 1, NULL, 1)
参见Oracle demo。
(\d{5})
是一个捕获组,匹配5个连续的数字并将值存储在组1中,而\.
只是匹配一个点(作为上下文)。 regexp_substr
函数的最后一个参数是捕获组的编号(这里,唯一一个是第一个)。