Регулярное выражение для сопоставления строки до первого вхождения разделителя

У меня есть строка, и мне нужно сопоставить шаблон и отбросить остальную часть строки после первого вхождения разделителя после совпадения шаблона

образец строки:

_fw_xx_app_id = ххххх & adobe_id = 59742375247590810332565440942222920249 & krux_user = YYYYYYY & user_agent = Zzzzzz & _fw_did_idfa = ааааааа & _fw_dpr = 2,00 & _fw_ae = nonauthenticated & _fwu% 3A386123% 3Atqxqle5of = 1 & _fwu% 3A386123% 3Atshc3wdb8 = 1

Я хочу извлечь только значение после ключа '_fw_ae=' до первого появления &

я пробовал это

regexp_substr(all_request_kv,'_fw_ae=(.+?)&|$',1,1,'e')

но это приносит все после _fw_ae= как показано ниже

_fw_ae=без аутентификации&_fwu%3A386123%3Atqxqle5of=1&_fwu%3A386123%3Atshc3wdb8=1, где в этом примере я хочу только без аутентификации


person pavan kumar    schedule 08.05.2019    source источник


Ответы (1)


Вместо нежадного квантификатора вы можете использовать отрицательный класс символов [^&], соответствующий не & внутри группы захвата:

_fw_ae=([^&]+)

демонстрация регулярных выражений

person The fourth bird    schedule 08.05.2019
comment
сработало как шарм, спасибо! Я делаю это на Снежинке - person pavan kumar; 08.05.2019
comment
Добро пожаловать. Я думаю, что это документация который вы можете использовать в качестве ссылки, чтобы проверить, что поддерживается. Я вижу, что он использует POSIX ERE и, насколько я знаю, не поддерживает нежадные квантификаторы, такие как .+? - person The fourth bird; 08.05.2019