Oracle REGEXP-如何获取下一个字符串

时间:2013-03-03 23:27:24

标签: sql oracle11g

我使用的是Oracle 11G,并在以下字符串中包含以下字符串:

NAME
'String having ZT-01183 - App # 2'
'This String having AG-01183 with - Apps # 4'

我正在使用以下正则表达式,但我得到的是以下内容:ZT-01183 - App#2和AG-01183 with - Apps#4。

CASE 
    WHEN REGEXP_LIKE(NAME, 'ZT-|AG-|having') 
    THEN regexp_replace(NAME, '^.*? having ','')
    END AS NEW_NAME

我只想在语句中获取下一个字符串,因此结果应该是AG-01183和ZT-01183。在我拥有之后我得到了一切。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以使用

THEN regexp_replace(name, '.*having ([^ ]+).*', '\1')

编辑:

我最初使用lookbehind的想法似乎被甲骨文所打破,而不是看起来能够使用lookbehind。我的编辑使用群组来取回您想要的内容。

答案 1 :(得分:0)

请尝试:

THEN regexp_substr(NAME, '[A-Z]{2}-[0-9]{5}')