RagBot Forum
 

Вернуться   RagBot Forum > • Всё что касается бота • > Макросы и Плагины

Макросы и Плагины Всё что относится к макросам и плагинам. Сборник готовых макросов.

Ответ
 
Опции темы Опции просмотра
Старый 06.11.2007, 17:35   #1
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию вопрос по $.lastMatchN

Я немного не понял как использовать эту команду
(.*) \(.*

\(.* <-- зачем это нужна?
или можна так....
Player (.*) is casting Extremity Fist on you


єто правильно?
consol /.*/
do pm "$.lastpm" $.lastMatchN
masterspirta вне форума   Ответить с цитированием
Старый 06.11.2007, 18:21   #2
Gans
Злостный ROFANовец
 
Аватар для Gans
 
Регистрация: 30.11.2006
Сообщений: 532
Вы сказали Спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
По умолчанию

флуд!

(.*) \(.*
это нарисованы сиськи, хорошая команда
__________________
Gans вне форума   Ответить с цитированием
Старый 06.11.2007, 18:49   #3
4epT
Админ
 
Аватар для 4epT
 
Регистрация: 10.12.2006
Сообщений: 4,370
Вы сказали Спасибо: 7
Поблагодарили 387 раз(а) в 240 сообщениях
Отправить сообщение для 4epT с помощью ICQ
По умолчанию

masterspirta, $.lastMatchN тут вовсе не при чём, "(.*) \(.*" - это regexp (регулярное выражение, шаблон)

тут вроде как-то описано

По экспериментируй и ты поймёшь что это
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤
Быстро и качественно напишу конфиг (макрос) за yAD! Стучи!
4epT вне форума   Ответить с цитированием
Старый 06.11.2007, 19:04   #4
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

я читал там....
И норм читал и там написано что
языке Perl сочетание .* означает - любое число любых символов.
Я хочу знать если мне надо вытянуть допустим ник как показано в примере
то на его месте мне надо поставить именно эту комбинацию --> (.*) \(.*
А переменная $.lastMatchN принимает значение той хрени которую ты хочеш вытащить (.*) \(.*
Но допустим мне нада написать |(любое число любых символов. ) 1+1| тоесть мне нада написать |(.*) \(.* 1+1 | я правильно думаю?
masterspirta вне форума   Ответить с цитированием
Старый 06.11.2007, 19:56   #5
4epT
Админ
 
Аватар для 4epT
 
Регистрация: 10.12.2006
Сообщений: 4,370
Вы сказали Спасибо: 7
Поблагодарили 387 раз(а) в 240 сообщениях
Отправить сообщение для 4epT с помощью ICQ
По умолчанию

нет, не правельно, точнее не совсем правельно!

Допустим у нас есть некий шаблон
Цитата:
"Player .* is casting Extremity Fist on you"
Код:
сработает на:
Player 4epT (0) is casting Extremity Fist on you (time 920ms)
Player вапвапвап is casting Extremity Fist on you (time 920ms)
Player ыва ыва ыва ыва ыва is casting Extremity Fist on you (time 920ms)
в этом случае, если АМ сработает, то наши переменные $.lastMatch1, $.lastMatch2, $.lastMatch3, ... будут пустыми.

$.lastMatchN - это то что находится в скобках, например:

Цитата:
Player (.*) is casting Extremity Fist on you
Код:
сработает на:
Player 4epT (0) is casting Extremity Fist on you (time 920ms)
Player вапвапвап is casting Extremity Fist on you (time 920ms)
Player ыва ыва ыва ыва ыва  is casting Extremity Fist on you (time 920ms)
тут $.lastMatch1 = тому, что будет написано между словами Player и is, т.е.
Код:
$.lastMatch1 = 4epT (0)
$.lastMatch1 = вапвапвап
$.lastMatch1 = ыва ыва ыва ыва ыва
$.lastMatch2 будет пустая, т.к скобки одни.

Обращаю внимание, что скобки "(" и ")" - это в шаблоне на самом деле не символ скобки, это так называемые метасимволы. Они ограничивают несколько символов, которые будут записаны в переменную $.lastMatch1.

Пример2:
Цитата:
(Player) (.*) is casting Extremity Fist on you
Код:
сработает на:
Player 4epT (0) is casting Extremity Fist on you (time 920ms)
Player вапвапвап is casting Extremity Fist on you (time 920ms)
Player ыва ыва ыва ыва ыва is casting Extremity Fist on you (time 920ms)
$.lastMatchN:

Код:
$.lastMatch1 = Player	$.lastMatch2 = 4epT (0)
$.lastMatch1 = Player	$.lastMatch2 = вапвапвап
$.lastMatch1 = Player	$.lastMatch2 = ыва ыва ыва ыва ыва
Пример3:
наклонная черта "\" - отменяет значение метосимвола. Т.е. если мы напишем так:
Цитата:
Player (.*) \(.*\) is casting Extremity Fist on you
Код:
сработает на:
Player 4epT (0) is casting Extremity Fist on you (time 920ms)
Player вапвапвап (sdfsdf) is casting Extremity Fist on you (time 920ms)
Player ыва ыва ыва ыва ыва (ыва ывц43) is casting Extremity Fist on you (time 920ms)
не сработает на:
Player 4epT is casting Extremity Fist on you (time 920ms)
Player вапвапвап ( is casting Extremity Fist on you (time 920ms)
Player ыва ыва ыва ыва ыва ) is casting Extremity Fist on you (time 920ms)
$.lastMatchN:

Код:
$.lastMatch1 = 4epT
$.lastMatch1 = вапвапвап
$.lastMatch1 = ыва ыва ыва ыва ыва
$.lastMatch2 будет пустая, т.к скобки одни.
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤
Быстро и качественно напишу конфиг (макрос) за yAD! Стучи!
4epT вне форума   Ответить с цитированием
Старый 06.11.2007, 22:03   #6
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

огромнейшее спасибо сам бы не разобрался теперь понял на 100% откуда ноги растут и на чом єто всё стоит!!!!!
masterspirta вне форума   Ответить с цитированием
Старый 06.11.2007, 22:13   #7
4epT
Админ
 
Аватар для 4epT
 
Регистрация: 10.12.2006
Сообщений: 4,370
Вы сказали Спасибо: 7
Поблагодарили 387 раз(а) в 240 сообщениях
Отправить сообщение для 4epT с помощью ICQ
По умолчанию

masterspirta, может есть предложения как это более понятно написать?
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤
Быстро и качественно напишу конфиг (макрос) за yAD! Стучи!
4epT вне форума   Ответить с цитированием
Старый 08.11.2007, 15:48   #8
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

я ещо чуть глубже капнул вот здесь-->
Цитата:
Примеры
Что ищем : Ключевое выражение
слово "ракета": ракета
слово "ракета" или "космос" ракета|космос
слово "дом" и затем "строитель" дом.*строитель
слово "дом" и "строитель" в любой последовательности (дом.*строитель)|(строитель.* дом)
слово "выборы" с учетом окончания выбор(ы|ах|ам)
упоминания о политических партиях, слово партия находится не дальше 10 символов от слова политическая политическ(ая|ой|ую).{0,10}пар и(я|и|ю|ей)
губернаторские выборы (губернаторск(ие|их|им).{0,10}в ыбор(ы|ах|ам))|(выбор(ы|ах|ам). {0,10}губернатор(|а|у))
выборы, но не губернаторские выбор(ы|ах|ам).{0,10}(?!.*губерна тор(|а|у))

Логика разбора ключевых выражений

Любой символ обозначает себя самого если это не метасимвол. Если вам нужно отменить действие метасимвола то поставьте перед ним '\'.

Строка символов обозначает строку этих символов.

Множество возможных символов (класс) заключается в квадратные скобки '[]' это значит что в данном месте может стоять один из указанных в скобках символ. Если первый символ в скобках это '^' - значит не один из указанных символов не может стоять в данном месте выражения. Внутри класса можно употреблять символ '-' обозначающий диаппазон символов. Например a-z один из малых букв латинского алфавита, 0-9 - цифра и т.д.

Все символы, включая специальные можно обозначать с помощью '\' как в языке С.

Альтернативные последовательности разделяются символом '|' Заметьте, что внутри квадратных скобок это обычный символ.

Внутри регулярного выражения можно указыват "подшаблоны", заключая их в крунлые скобки и ссылаться на них как '\номер' Первая скобка обозначается как '\1'.
Логическая группировка
| - альтернатива (или)
() - группировка
Группировка: круглые скобки
Круглые скобки применяются для определения группы символов или части выражения, к которой относится символ альтернативы ("|") или модификатор.
Примеры
дом(ами|ом)=>"домами" или "домом"
домами|ом=>"домами" или "ом".
домами?=>"домами" или "домам".
дом(ами)?=>"дом" или "домами".
[] - класс символов
Примеры
[abc]=>"a", "b" или "c"
[^abc]=>любая строчная буква кроме "a", "b" или "c".
С применением модификаторов:
[a-z]?=>любая строчная буква, или отсутствие символа
.*=>любое число любых символов
Использование метасимволов:
\w - алфавитно-цифровой или '_' символ
\W - не алфавитно-цифровой или '_' символ
\s - один пробел
\S - один не пробел
\d - одна цифра
\D - одна не цифра

Обратите внимание что все это "один" символ. Для обозначения последовательности применяйте модификаторы. Так:
. - любой символ
\w+ - слово
\d+ - целое число
[+-]?\d+ - целое со знаком
[+-]?\d+\.?\d* - число с точкой
Модификаторы метасимволов
(пишутся после метасимвола):
* - повторяется 0 или большее число раз
+ - повторяется 1 или большее число раз
? - 1 или 0 раз
{n} - точно n раз
{n,} - по меньшей мере раз
{n,m} - не менше n, но и не больше m

Примеры
дома?=>"дом" или "дома"
дома+=>"дома", "домаа" и т.д.
дома*=>"дом", "дома", "домаа" и т.д

Во все других случаях фигурные скобки считаются обычными (регулярными) символами. Таким образом '*' эквивалентна {0,} , '+' - {1,} и '?' - {0,1}. n и m не могут быть больше 65536.

По умолчанию действие метасимволов "жадно" (greedy). Совпадение распространяется столько раз сколько возможно не учитывая результат действия следуюющих метасимволов. Если вы хотите "уменьшить их аппетит" то используйте символ '?'. Это не изменяет значение метасимволов просто уменьшает распространение. Таким образом:
*? - станет 0 и более
+? - 1 и более
?? - 0 или 1 раз
{n}? - точно n раз
{n,}? - не меньше n раз
{n,m}? - больше или равно n и меньше m раз
Расширенные возможности поиска
(?:шаблон) - группировка как и '( )' но без обратной ссылки
(?=шаблон) - "заглядывание" вперед.
Например \w+(?=\t) соответствует слову, за которым идет табуляция, но символ '\t' не включается в результат.
(?!шаблон) - "заглядывание" вперед по отрицанию.

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

Последний раз редактировалось masterspirta; 08.11.2007 в 15:50.
masterspirta вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 08:39. Часовой пояс GMT +3.