Выражение регулярного выражения для рептилий - PullRequest
0 голосов
/ 19 октября 2019

Это для экспертов по регулярным выражениям. Я пытаюсь написать выражение Regex для пары ключ-значение для файлов cookie, у которой = перед ключом и ; в конце значения.

Итак, в основном key=value; должно пройти. Строка может быть повторяющейся, для которой она также должна пройти. как key1=value1; key2=value2; должно пройти,

Однако все, кроме этого, должно потерпеть неудачу. Например, key=value1;key=value2;; должен потерпеть неудачу, так как имеет 2 ; в конце. А также строки типа key==valu1;;, =value;, key=;, key=value должны потерпеть неудачу.

До сих пор я изучал группирование в регулярных выражениях и придумал этот (?<pat>([a-zA-Z0-9 ]*?=[a-zA-Z0-9\- :]+;)). Но это не работает. Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 19 октября 2019

Может быть,

^(?:\b[a-z0-9]+=[a-z0-9]+\b;\s*)*$

или другое подобное выражение может работать нормально.

Демонстрация

Тест

$re = '/^(?:\b[a-z0-9]+=[a-z0-9]+\b;\s*)*$/s';
$str = 'key1=value1; key2=value2;';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...