Вы используете в качестве разделителя прямые косые черты, но также включаете в свои регулярные выражения неэкранированные косые черты.Вы должны сначала избежать их, поставив перед ними две обратные косые черты.Требуется две обратные косые черты, потому что обратная косая черта сама является метасимволом и должна быть экранирована с помощью второй обратной косой черты.Фактически это создает одну обратную косую черту, которая может использоваться для экранирования.
Таким образом, ваше регулярное выражение становится:
preg_match("/^[\d+\\/\d+\\/\d+\ \d+:\d+:\d+:\d+\ CEST]\ \w{8}\ \w+?\ +\w+?\ +.+?$/", $line, $matches);
Обратите внимание, что вы также пропустили разделитель.
Кроме того, вы можете просто изменить разделители следующим образом:
preg_match("~^[\d+\/\d+\/\d+\ \d+:\d+:\d+:\d+\ CEST]\ \w{8}\ \w+?\ +\w+?\ +.+?$~", $line, $matches);
Редактировать
Я только что заметилчто вы пытаетесь сопоставить [
и ]
как литералы.Это, однако, мета-символы (классы символов), и, как мне кажется, их также следует экранировать (\[
и \]
).