Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Регулярные выражения поиск в многострочном в режиме, убрать из результата символы.

HAL 9000 Мудрец (16957), закрыт 4 года назад
[??].*[??]
Выражение находит текст вида:
??Любой текст??
Требуется:
1. Оставить только текст в результате.
2. Работа в многострочном режиме (при переносе на другие строки)
Лучший ответ
Андрей Высший разум (425879) 4 года назад
preg_match_all('#\?{2}(.*?)\?{2}#s', $text, $result);

И в $result[1] получаешь массив всех текстов, находящихся между ??
HAL 9000Мудрец (16957) 4 года назад
Спасибо!
Дед МазайГений (58109) 4 года назад
Что такое решётка #? Сайт regex101.com не считает её специальным символом.
Андрей Высший разум (425879) В preg-функциях PHP регулярное выражение должно заключаться в символы-скобки: <символ><регулярное выражение><символ><модификаторы> В качестве такого символа часто используют '/'. И на regex101 по умолчанию тоже '/' - ты его не вводишь, но он отображается в поле ввода. У меня по работе символ '/' часто встречается внутри регулярных выражений и чтобы его каждый раз не экранировать, предпочитаю ограничивать регулярку симворлом '#'. Кстати, если ты на regex101 в режиме PCRE (PHP) щёлкнешь по вертикальному троеточию возле левой границы поля ввода регулярного выражения, то сможешь поменять '/' на другой символ из списка.
HAL 9000Мудрец (16957) 4 года назад
Здравствуйте Андрей шаблон захватывает знаки ??
И получается: ??Текст??
Требуется: Текст
Андрей Высший разум (425879) $result[0][0] -> '??Текст??' $result[1][0] -> 'Текст' Потому я и написал, что нужные данные в $result[1]
Остальные ответы
Редис Александрович Оракул (77317) 4 года назад
Регэкп не ищет того, что не надо, он находит, то что надо, а твой вопрос звучит именно так.
1. Найди всё по твоему шаблону в масив. /g добавляет глобальности поиску [??].*[??]/g
2. Обойди массив и удали \?
Дед МазайГений (58109) 4 года назад
Регулярное выражение не соответствует его описанию.
"2. Обойди массив и удали \?"
Не факт, что это правильно. Если "Любой текст" содержит "?", он будет тоже удалён.
Редис Александрович Оракул (77317) не должен вроде, там же вроде сначала отбереться ??Любой текст?? а в нем уже удаляться ?
Похожие вопросы