Мне нужно проверить заголовок Accept запроса с помощью регулярных выражений (python).Регулярное выражение должно соответствовать application / json или application / jose + jwe и дополнительным параметрам (charset = utf8 и значение q).
Первоначально требовалось принимать только значения application / json и q и никаких других типов mimi.У меня было следующее регулярное выражение, которое сработало:
(^application/json;q=(0|1|(0\.[1-9]))$)|(^application/json$)
Я знаю, что мне нужно иметь возможность включить параметр charset в charset=utf8
и иметь возможность сопоставления в любом месте строки.
Я новичок в регулярных выражениях и создал следующее регулярное выражение, но оно не соответствует всем требованиям (https://regex101.com/r/vFMCcI/11) -
(application/json; q=(0|1|(0\.[1-9])))$|(application\/json; charset=utf8)|(application\/json; charset=utf8 q=(0|1|(0\.[1-9])))|(application/json)
Тестовые строки
application/json,
application/json; q=0.2
application/json; charset=utf8
application/json; q=0.2 charset=utf8
application/json; charset=utf8 q=0.2
text/html, application/json; q=0.2, application/pdf
application/jose+jwe
application/jose+jwe; q=0.2
application/jose+jwe; charset=utf8
application/jose+jwe; q=0.2 charset=utf8
application/jose+jwe; charset=utf8 q=0.2
text/html, application/jose+jwe; q=0.2, application/pdf
- Почему я получаю только частичные совпадения для
application/json; charset=utf8 q=0.2
? - Регулярное выражение становится слишком длинным, когда application / jose + jwe даже не включено.мс на запросы. Какие-либо указатели на это могут быть лучше оптимизированы?
РЕДАКТИРОВАТЬ:
Значение Q должно быть 0-1 и только до 1 десятичного знака
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Единственное допустимое значение кодировки: charset=utf8
Спасибо