Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Общалка aka Флуд _ Вопрос по регулярным выражениям

Автор: arktik 26.1.2012, 11:25

Делал, делал я свой хаб и уткнулся в проблему: не работает команда $SR. Вскоре определился, что дело все в Regex'ах, а именно, проверка на качество команды всегда отрицательное. Вот плохое выражение:

Код
^\$SR\s\S*\s.*\x05.*\s\d*\/\d*\x05.*\s\S*\x05\S*\|

Может кто нибудь подскажет, как мне быть с 5-ым символом ASCII? Мне кажется, что именно в нем проблема.

Заранее спасибо.

Автор: Ksan 26.1.2012, 11:33

А какое действие пятого символа? Что он собой представляет?
Может, найдётся аналог для записи попроще..

Автор: Enyby 26.1.2012, 12:12

Ksan, разделитель это. В протоколе http://mydc.ru/index.html?showtopic=915&view=findpost&p=6845.

arktik, Пиши так:

Код
sPattern = "^\$SR\s\S*\s.*"..string.char(5)..".*\s\d*\/\d*"..string.char(5)..".*\s\S*"..string.char(5).."\S*\|"


Эмс... Я что-то подумал что это на LUA. Вижу что нет. Неплохо бы указать язык. Тогда и будут предложения по записи.

Автор: arktik 26.1.2012, 13:28

Цитата(Enyby @ 26.1.2012, 20:12) *
Эмс... Я что-то подумал что это на LUA. Вижу что нет. Неплохо бы указать язык. Тогда и будут предложения по записи.

Я использую Java.

Цитата(Enyby @ 26.1.2012, 20:12) *
arktik, Пиши так:
Код
sPattern = "^\$SR\s\S*\s.*"..string.char(5)..".*\s\d*\/\d*"..string.char(5)..".*\s\S*"..string.char(5).."\S*\|"


Я не знал, что можно так просто вставить любой символ в паттерн. Попробую-ка я на яве так сделать.

Автор: Enyby 26.1.2012, 13:38

Если Java, то "\x05" будет достаточно. Может быть регулярное выражение составлено не верно?

ADD:
У меня получилась такая регулярка:

Код
^\$SR\s\S+\s.+\x05\d+/\d+\x05.+\s([^:]+:\d+)?(\x05\S+)?|

На основе:
Цитата
$SR [Ник_ответчика] [Результат][0x05][Свободные_слоты]/[Всего_слотов][0x05][Имя_хаба] ([IP_хаба:Порт]){[0x05][Целевой_ник]}|