Perl-совместимые регулярные выражения должны начинаться и заканчиваться разделителем (ниже %
).Ваш RE начинается с "2", который PCRE интерпретирует как разделитель, следовательно, ошибка "Разделитель не должна быть буквенно-цифровой или обратной косой черты".
Выражение, с которого я бы начал проверять "2020 | 9-значный номер |дата час | слово | слово "равно %^2020\|\d{9}\|\d{2}[-/]\d{2}[-/]\d{4} \d{2}:\d{2}:\d{2}\|\w+\|\w+$%
.Кроме даты, RE, соответствующие полям, очень просты: предопределенный класс (\d
для цифр, эквивалентный [0-9]
; \w
для слов, эквивалентный [A-Za-z0-9_]
) и повторение ({n}
означаетточно n , +
означает 1 или более).
Дата соответствует \d{2}[-/]\d{2}[-/]\d{4} \d{2}:\d{2}:\d{2}
.При этом используются те же элементы, что и у других подшаблонов, просто их больше.Если вы хотите соответствовать большему количеству форматов даты, вам нужно либо написать более сложное RE, либо извлечь дату и использовать (например) strtotime
для ее анализа.
Если вы хотите проанализировать целоеСтрока, а не просто проверить его, следуйте совету Пекки.