У меня есть поле с именем myfield
, которое содержит эту строку:
{'Content-Language': 'en', 'X-Frame-Options': 'SAMEORIGIN', 'X-Generator': 'Drupal 7 (http://drupal.org)', 'Link': '<https://01.org/node>; rel="shortlink"', 'Some-Header-Key': 'max-age=31; addSomething', 'Content-Encoding': 'gzip'}
Я хочу захватить 'Some-Header-Key': 'max-age=31; addSomething'
, где: 1) 'Some-Header-Key'
, max-age
- фиксированные значения, которые должны всегдаприсутствовать.
2) addSomething
является необязательным.
3) Между двойным двоеточием и знаком равенства может быть один или несколько пробелов
4) Общим формальным является «ключ»: «значение» с одинарными или двойными кавычками.
5) ([^""|'])*
, чтобы сказать: ноль или более символов, которые не являются одинарными или двойными кавычками.Это для захвата addSomething
.
Я написал этот запрос:
select myfield
from mytable
where mycol regexp "('|"")Some-Header-Key('|"")\s*:\s*('|"")([^""|'])*max-age\s*=\s*[0-9]+([^""|'])*('|"")";
Но он ничего не возвращает !!хотя myfield
содержит приведенную выше строку примера.
Когда я скопировал значение поля во внешний текстовый файл и запустил регулярное выражение в grep
, регулярное выражение правильно захватило строку.
Что не так в MySQL?Я использую MySQL Workbench 8.0 в Ubuntu 18.04.