Как достать подвыражение REGEXP_SUBSTR в MariaDB?

SELECT REGEXP_SUBSTR(name_eng, 'cost\_([a-z]+)\_production') AS reg FROM `cost_districts_name`

Необходимо вытащить подвыражение в круглых скобках. MariaDB 10.1


Ответы (1 шт):

Автор решения: Fat-Zer

Можно просто взять REGEXP_REPLACE:

SELECT REGEXP_REPLACE(name_eng, 'cost_([a-z]+)_production', '\\1') AS reg 
  FROM `cost_districts_name`

А т.к. под капотом там должен быть PCRE, то можно и заморочиться с просмотром вперёд/назад

SELECT REGEXP_SUBSTR(name_eng, '(?<=cost_)([a-z]+)(?=_production)') AS reg 
  FROM `cost_districts_name`

ЗЫ: подчёркивание в регулярках обычно эскейпить ни к чему...

→ Ссылка