Форум русскоязычного сообщества Ubuntu


Автор Тема: Регулярное выражение для чата  (Прочитано 1628 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Zeboton

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
    • Просмотр профиля
Регулярное выражение для чата
« : 12 Ноября 2008, 14:36:42 »
Пишу чат. Хочу сделать в нём возможность приватного обращения. К сожалению в регулярных выражениях (regexp) я не очень силён.

Мне нужно регулярное выражение, которое из строки
%%Пользователь 1%% %%Пользователь 2%% %%Пользователь 3%% Текст сообщенияВыделяло:
1: Пользователь 1
2: Пользователь 2
3: Пользователь 3
4: Текст сообщения

Я создал выражение:
/^(%%([^%]+)%% ){0,10}(.*)$/Но оно выдаёт только последнего пользователя и сам текст сообщения. Что в нём неправильно? Проверял при помощи сайта http://regexpr.ru.

Кстати, нужно не забывать что количество пользователей к которым обращаются может быть от нуля до 10.

Оффлайн tempx77

  • Участник
  • *
  • Сообщений: 212
    • Просмотр профиля
Re: Регулярное выражение для чата
« Ответ #1 : 12 Ноября 2008, 18:40:18 »
а сплитнуть по "%%" не проще будет?

Оффлайн Zeboton

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
    • Просмотр профиля
Re: Регулярное выражение для чата
« Ответ #2 : 12 Ноября 2008, 22:07:14 »
Конечно, как вариант, но это если не найдётся решение для regexp.

Оффлайн Zeboton

  • Автор темы
  • Активист
  • *
  • Сообщений: 276
    • Просмотр профиля
Re: Регулярное выражение для чата
« Ответ #3 : 14 Ноября 2008, 11:39:44 »
Решил немного изменить условие, так как знак процента может использоваться в общении. Теперь строка выглядит так:
^Пользователь 1^ ^Пользователь 2^ ^Пользователь 3^ Текст % сообщенияА регулярное выражение (regexp), который её разбирает так:
/(\^([^\^]+)\^){0,10}([^\^]+)/
Вот результат.

 

Страница сгенерирована за 0.046 секунд. Запросов: 26.