powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как "допилить" регулярное выражение?
5 сообщений из 5, страница 1 из 1
Как "допилить" регулярное выражение?
    #39288620
loren.zp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть текст типа:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
начало какого-то текста 

{:ru}текст на рус{:}{:en} текст на en{:}{:fr} текст на fr{:}

еще текст

{:ru}текст на рус{:}{:en} текст на en{:}{:fr} текст на fr{:}

Снова текст 

{:ru}текст на рус{:}{:en} текст на en{:}{:fr} текст на fr{:}

концовка текста



С помощью регулярки, необходимо улалить текст, относящийся к языку. Моих скромных знаний хватило лишь на то, чтобы с помощью preg_replace удалить, написав:
Код: php
1.
preg_match("/{:ru}(.*){:}/s", $input_line, $output_array);

Но удаляется текст от первого вхождения {:ru} до последнего {:}. Каким образом переписать, чтобы удало корректно?

ЗЫ может есть более правильный способ это сделать, подскажите?
...
Рейтинг: 0 / 0
Как "допилить" регулярное выражение?
    #39288623
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способы есть.
Можно инвертировать жадность. Модификатором "U" или "?" в маске.
Ещё, вместо "." (любой символ) можно использовать класс "[^{]" (не открывающая фигурная скобка).
...
Рейтинг: 0 / 0
Как "допилить" регулярное выражение?
    #39288654
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
loren.zp,

/\{:[a-z]+\}[^{]+\{:\}/i
...
Рейтинг: 0 / 0
Как "допилить" регулярное выражение?
    #39289402
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uloren.zp,

/\{:[a-z]+\}[^{]+\{:\}/i

вот это из сериала, смотрите, запомните, и никогда больше так не делайте. автор не сказал что не может быть текста {:en}in these case please use {} for .... {:}
так же речи не шло, что текст на языке какомто не может быть нулевым...

правильно сказали - поменять жадность алгоритма выбора

и вообще я полагаю автору надо другое - удалить все языки кроме нужного, вместо циклического удаления по одному можно использовать

если надо оставить ru
/\{:(?!ru\})[a-z]+\}.*?\{:\}/
тоесть берём {:[a-z]+\} но креме случая когда после двоеточия ru} - тоесть кроме русского.
(если почитать - отрицательный просмотр вперёд (?!шаблон) )
...
Рейтинг: 0 / 0
Как "допилить" регулярное выражение?
    #39289465
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

додумывать за автора, неблагодарное занятие.
поэтому я отвечаю ровно на то что он спросил.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как "допилить" регулярное выражение?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]