Примеры
Что ищем : Ключевое выражение
слово "ракета": ракета
слово "ракета" или "космос" ракета|космос
слово "дом" и затем "строитель" дом.*строитель
слово "дом" и "строитель" в любой последовательности (дом.*строитель)|(строитель.*дом)
слово "выборы" с учетом окончания выбор(ы|ах|ам)
упоминания о политических партиях, слово партия находится не дальше 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' не включается в результат.
(?!шаблон) - "заглядывание" вперед по отрицанию.
Шаблон должен охватывать полностью предполагаемую область поиска. Рекомендуется использовать .* и прочие мультипликаторы.
Источник
http://www.scanet.info/regexp_ru.htm
[FAQ] памятка по регулярным выражениям (regexp)
Модератор: 4epT
Правила форума
Этот раздел является руководством и тут разрешено оставлять сообщения лишь для уточнения и внесения корректив в существующие материалы. Для вопросов существует ряд других разделов.
Этот раздел является руководством и тут разрешено оставлять сообщения лишь для уточнения и внесения корректив в существующие материалы. Для вопросов существует ряд других разделов.
есть такая программка, вообще ит толпа таких программок, например regexBuddy. Т.е. не скажу, что она лучше всех, но я скачал, меня устраивает в принципе. Так вот, она позволяет строить выражения тыкая прямо в кнопочки условий, проверять выражения на примерах, обрабатывать файлы и много другой фигни. Оч удобно.
Универсальный обход кустарных антибот-защит:
xKore 1 -- $20
xKore 1 -- $20
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Он-лайновый "конструктор шаблонов". Скриншот ниже.
Как этим пользоваться? Хинт от 4орта - загоняем фразу, которую нам нужно "разгрести" (например, строку, скопированную из консоли ОпенКоры) и в верхнее поле (регулярное выражение), и в нижнее (исходная фраза); начинаем изменять верхнее поле, добавляя метасимволы/модификаторы, и смотрим, что же у нас получается в поле "результат".
Добавлено спустя 11 минут 49 секунд:
"Полный текст" того, как по мнению г-на 4орта надо писать авто-макросы, основанные на регекспе. Публикуеццо без купюр.
Как этим пользоваться? Хинт от 4орта - загоняем фразу, которую нам нужно "разгрести" (например, строку, скопированную из консоли ОпенКоры) и в верхнее поле (регулярное выражение), и в нижнее (исходная фраза); начинаем изменять верхнее поле, добавляя метасимволы/модификаторы, и смотрим, что же у нас получается в поле "результат".
Добавлено спустя 11 минут 49 секунд:
"Полный текст" того, как по мнению г-на 4орта надо писать авто-макросы, основанные на регекспе. Публикуеццо без купюр.
Задача стоит - поймать в консоли "эмоцию" моего собственного чара (очевидно, для xKore 1), но у новичка это не получается, потому что он пишет:
automacro blablabla {
console /мойник (0): *SP*/
call {...
...ну, ясный-красный это не срабатывает, ведь * (звездочка) - это ж метасимвол.
4орт: учись чувак:
Делай раз:
Хочу написать макрос, нада почитать что же это такое. Читаем
Делай два:
Мне подойдет условие "console", но там используется какой-то <набор_символов> (regexp). Дается какая-то ссылка, но она какая-то непонятная... Надо бы поискать по гайду, может что ещё есть про regexp:Делай три:
Лезем в Пример №1...бла, бла, бла...потом мистер Sauron сознаётся и выдаёт доку (я учился по ней):отсюда мы и узнаём что есть некие метасимволы, и что * на самом деле:ЗЫ: там же есть ссылочка на конструктор шаблона* - повторяется 0 или большее число раз;
1. в Исходный текст пишем: мойник (0): *SP*
2. в Регулярное выражение пишем: мойник (0): *SP*
3. в Результаты обработки: нефига мы не получаем..
значит что-то не так с шаблоном..
4. закрываем в шаблоне все метасимволы: мойник \(0\): \*SP\*
5. ура, в Результаты обработки получаем: (мойник (0): *SP*)
- Вложения
-
- http://www.pcre.ru/eval/
- pcrerueval.png (5.14 КБ) 5972 просмотра
Последний раз редактировалось piroJOKE Пн янв 07, 2008 4:44 pm, всего редактировалось 1 раз.
- piroJOKE
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Нам пишут некоторые пионэры: "Да это же Перл! Мы не хотим изучать эту сложную штуку, нам она нафиг не нужна и в жизни нигде не пригодицца!".
Позвольте-ка вам кое-что пояснить. Регулярные выражения используются в чертовой куче программ, не имеющих никакого отношения к Перлу!
Я специально поковырял свой компьютер, чтобы нащупать программы, в которых они используются. И что же?! Я нашел их несколько штук! Давайте взглянем на них, чисто ради примера:
Позвольте-ка вам кое-что пояснить. Регулярные выражения используются в чертовой куче программ, не имеющих никакого отношения к Перлу!
Я специально поковырял свой компьютер, чтобы нащупать программы, в которых они используются. И что же?! Я нашел их несколько штук! Давайте взглянем на них, чисто ради примера:
- Вложения
-
- TotalCommander позволяет использовать регэкспы при поиске.
- tcregex.png (4.01 КБ) 5992 просмотра
-
- Популярная роутилка и раздавалка и-нета Kerio WinRoute Firewall использует регэкспы для разгребания логов, настройки фильтрации и т.д.
- kerioregexp.png (6.67 КБ) 5950 просмотров
-
- Другой популярный плагин к FireFox'у, NoScript.
- ffnsregexp.png (7.06 КБ) 5940 просмотров
-
- Популярнейший плагин AdBlockPlus к броузеру FireFox эффективно гасит рекламу. И что вы думаете? В качестве шаблонов он использует регэксп!
- ffabpregexp.png (6.55 КБ) 5939 просмотров
-
- В Винде мы можем пользоваться портированными из юникса GNU-шными утилитами. Многие из них поддерживают регэксп. Еще бы, ведь это "родной" язык описания шаблонов для юнихов.
- unxutilsregexp.png (1.07 КБ) 5959 просмотров
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
вот ещё один конструктор, ток я его ещё не юзал:
http://regexpr.ru
Добавлено спустя 9 минут 41 секунду:
ахаха, там ещё и "очень крутой" форум есть видимо по програмированию
http://regexpr.ru
Добавлено спустя 9 минут 41 секунду:
ахаха, там ещё и "очень крутой" форум есть видимо по програмированию