) между пробелом и концом строки.
отрим следующий пример:
$payload = '
ababaaabbb =%=
ababaaabbb =%=
ababaa =%=
';
$pattern = '/^[ab]+\s*(?:=%=)?$/m';
preg_match_all($pattern, $payload, $matches);
var_dump($matches);
Ожидаемый и фактический результат матча:
"ababaaabbb =%="
"ababaaabbb =%="
"ababaa =%="
Но если$payload
изменился на
$payload = '
ababaaabbb =%=
ababaaabbb =%=
ababaa =%'; // "=" sign removed at EOL
фактический результат
"ababaaabbb =%="
"ababaaabbb =%="
но ожидается
"ababaaabbb =%="
"ababaaabbb =%="
"ababaa "
Почему это случилось? группа(?:=%=)?
необязательно из-за?
и последняя строка в полезной нагрузке также должна присутствовать в результатах поиска.