我试图在特定情况下获得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)