У меня есть эти данные:
Что мне нужно сделать:
1) Для каждого вхождения My-Name
словарного ключа (который может встречаться 0 или более раз), убедитесь, что за ним следует присвоение переменной AND, и в этом значении ключа есть слова Good
и firstOnly
в любом порядке в любом порядке.
Примеры полей данных:
Example#1
(не должно совпадать, поскольку 'My-Name'
не содержит Good
и firstOnly
):
{'Accept-Encoding, Accept', 'My-Name': 'PHPSESSID = bbb; Путь = /»,
'Cache-Control': 'public, max-age = 14400'}
Пример # 2 (НЕ ДОЛЖЕН совпадать, так как второе вхождение 'My-Name'
не содержит ни Good
, ни firstOnly
. Однако первое совпадение совпадений. Но мне нужно проверить каждое вхождение 'My-Name'
это критерии)
{'Accept-Encoding, Accept', 'My-Name': 'PHPSESSID = aaa; Хорошо;
firstOnly; path = / ',' Cache-Control ':' public, max-age = 14400 ',
«Мое имя»: «PHPSESSID = xxx; Хорошо}
Пример # 3 (должен совпадать, потому что за каждым 'My-Name'
следуют Good
и firstOnly
):
{'Accept-Encoding, Accept', 'My-Name': 'PHPSESSID = aaa; Хорошо;
firstOnly; path = / ',' Cache-Control ':' public, max-age = 14400 ',
«Мое имя»: «PHPSESSID = xxx; Хорошо; firstOnly}
Мой запрос:
select mycol
from mytable
where mycol regexp "('|"")My-Name('|""):\\s*('|"")[^()<>@,;:\\""'/?={}]*\\s*=\\s*[^()<>@,;:""'?={}]*;\\s*((Good[^'""]*firstOnly)|(firstOnly[^'""]*Good))[^'""]*('|"")";
Приведенный выше запрос возвращает записи Example#2
и Example#3
. Он не должен возвращать пример № 2.
Вопрос: Можете ли вы указать мне, как улучшить запрос для проверки каждого вхождения из 'My-Name':
ключа в соответствии с моими критериями?