это интересный случай, который я нашел.
Пожалуйста, рассмотрите это $ data_in, содержащее:
[spoiler title="DATE : " open="1" style="1"]
11/Jan/2015
12/Feb/2015
15/Mar/2015
[/spoiler]
Моя цель состоит в том, чтобы извлечь все даты, написанные из данного текста.
Итак, какой (регулярное выражение), что подходит?
$data_ext = preg_match("]/^(\d{2})\/(\w+)\/(\d{4})[", $data_in, $data_array);
Это не дало мне хорошего результата, вместо этого я получил ошибку:
Предупреждение: preg_match (): в конце не найдено конечного разделителя ‘]’ …
Так какую часть я забыл написать на ней?
Регулярные выражения имеют разделители. Первый и последний символ в регулярном выражении (если у вас нет модификаторов) отмечают начало и конец шаблона. Наиболее часто используемый разделитель /
потому что некоторые языки (например, Javascript) есть особые черты для этого. Но вы можете использовать любой не буквенно-цифровой символ без обратной косой черты, без пробелов.
Если вы также хотите включить в шаблон символ, используемый в качестве разделителя, его необходимо экранировать. Так что это хорошая идея в этом случае не использовать /
для свиданий.
Это пример регулярного выражения с #
в качестве разделителя:
$data_ext = preg_match_all('#^(\d{2})/([a-z]{3,9}|\d{1,2})/(\d{4})$#mi', $data_in, $data_array);
#
разделители и имеет m
(многострочный) и i
модификаторы (без учета регистра).Других решений пока нет …