首页 > 解决方案 > REGEXP_SUBSTR Oracle 不同于 regext.com

问题描述

我正在使用这个正则表达式

#([^#\s]*)#

(在 C# 和regexr.com 中工作正常)

REGEXP_SUBSTR在 Oracle 中,我得到了不同的结果。

SELECT REGEXP_SUBSTR('test #2 #123456789#  #blabla #1','#([^#\s]*)#') from dual

甲骨文 =#2 #

C#/regexr.com =#123456789#

有人知道如何在 Oracle 中获得相同的结果吗?

标签: regexoracleoracle12c

解决方案


您可以使用SUBSTR和的组合INSTR来获得所需的结果

询问

WITH strings (str_val) AS (SELECT 'test #2 #123456789#  #blabla #1' FROM DUAL)
SELECT SUBSTR (str_val,
               instr(str_val, '#', 1,2),
               instr(str_val, '#', 1,3) - instr(str_val, '#', 1,2) + 1)
  FROM strings;

推荐阅读