获取特定出现点下划线之间的值



我试图在特定情况下获得2个下划线之间的值。

,

HOL_1026-03_OW_01.9000_01.3400_0.2800_CL_32, 0"_0, 0"_0, 0"_RR_NORM_CR-HSR_CR-SUP_ALLHOL-013_FCNO_NOFIN_VRA-010_HXHHH_.

我正试图从中提取"CR-HSR""CR-SUP"。这是我最初想出来的

(?!(.*?_){8}).*(?=(.*?_){7}) and  (?!(.*?_){7}).*(?=(.*?_){6})

在regexr.com

我正在使用PL/SQL,当我运行REGEXP_SUBSTR()方法时,它返回null。

不需要遍历,您可以重复匹配非_的组,然后再匹配它。

^([^_]+_){12}([^_]+)

然后获取捕获组2的值。

SELECT regexp_substr('HOL_1026-03_OW_01.9000_01.3400_0.2800_CL_32, 0"_0, 0"_0, 0"_RR_NORM_CR-HSR_CR-SUP_ALLHOL-013_FCNO_NOFIN_VRA-010_HXHHH_.', '^([^_]+_){12}([^_]+)', 1,1,NULL,2) from dual;

输出
CR-HSR

要匹配CR-SUP,您可以将量词从{12}更改为{13}

作为替代,更短的方式也可以是

REGEXP_SUBSTR(c, '[^_]+', 1, 13)

相关内容

  • 没有找到相关文章

最新更新