Автор Тема: Обсуждение уроков по работе с Регулярными Выражениями (RegExp)  (Прочитано 14862 раз)

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

Оффлайн Bloodrinker [?]

  • Новичок
  • *
  • Сообщений: 228
  • Репутация: 19
  • Пол: Мужской
  • <Блуждающий...>
    • Награды
В данной теме обсуждаем уроки по работе с Регулярными Выражениями (RegExp).



спасибо за уроки, но можно было еще что нибудь написать)
Что то на уроки все добрые стали) весна влияет наверно)
« Последнее редактирование: Январь 25, 2016, 02:42:35 от CreatoR »

Русское сообщество AutoIt


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Redline
Хорошее дело начал.

Есть примечания...
* «Ведение» это когда что то предвидится (“у меня было ведение”), а нужно видимо «Введение» :)
* Скобки лучше открывай после пробела, а то выглядит не очень (вот так).

[?]
Цитировать
Важное замечание: при работе с обратными ссылками сразу после ссылки нельзя ставить цифры!
Я как то случайно нашёл недокументированную фичу в RegExp AutoIt'а (точнее подглядел её у Perl'а), которая как раз позволяет использовать цифры после обратных ссылок (странно оно правда по русский звучит :)), после открытия тикета на эту тему, эту фичу документировали:

Цитировать
Remarks

To separate back-references from actual (replaced) numbers, wrap it with half-round brackets, i.e: "${1}5".

А это значит, что отделять обратные ссылки от цифр можно, используя полукруглые скобки:
Код: AutoIt [Выделить]
StringRegExpReplace($Test, ".*(\d+)", "${1}1")


P.S
Вывод:
Почаще заглядывать в справку, и смотреть на шаблоны в других ЯП.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Redline [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 506
  • Репутация: 369
  • Пол: Мужской
    • Награды
CreatoR
Спасибо за ценные замечания! Исправлю.
Про ссылки сам долго искал в архиве oszone.net и нашел только такие решения, а в справке не заметил даже, т.к. чаще пользуюсь русской  :-[.
В таком случае обходные решения оставлю для истории.
Bloodrinker
Это только первый пилотный урок!
В выходные скорее всего продолжу  ;)
Уроки по регулярным выражениям на AutoIt: RegExp

Русское сообщество AutoIt


Оффлайн zlo-kazan [?]

  • Скриптер
  • ****
  • Сообщений: 374
  • Репутация: 100
  • Пол: Мужской
    • Награды
Метасимволы
Цитировать
"^" - совпадает с началом строки (для мультистрокового текста совпадает с началом каждой строки, но для этого необходимо включить спец флаг "(?m)", его рассмотрим позже)
Пример выводит строки из мультистрокового текста, начинающиеся с буквы "j":
Шаблон выводит только 1-е 3-х буквенные начинающиеся на j... :-)


P.S. Экзамен будет? :-)))

Оффлайн Redline [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 506
  • Репутация: 369
  • Пол: Мужской
    • Награды
zlo-kazan  [?]
Цитировать
Шаблон выводит только 1-е 3-х буквенные начинающиеся на j... :-)P.S. Экзамен будет? :-)))
Поправил.
Оказалось трудно придумывать вразумительные примеры  :wacko:
На счет экзамена можно будет составить шаблоны посложнее для самостоятельного изучения  :D

Русское сообщество AutoIt


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Redline  [?]
Цитировать
"\s" - символ пробела, совпадающий с: обычным пробелом, горизонтальная табуляция, вертикальная табуляция, началом строки, возвратом каретки или началом новой страницы "( \r\n\v\t\f)"
Вертикальная табуляция? это вообще то горизонтальный/вертикальный пробел, табуляция может быть только горизонтальной :) (в справке видимо опечатка на эту тему). Кстати следует в скобки добавить и "\h" (горизонт. пробел).

Цитировать
"\w" - символ буквы "слова", соответствует "(a-zA-Zа-яА-Я0-9_)"
"а-я" никак не попадает под этот шаблон, проверяй всё на деле, а также внимательнее читай справку, там написано:
Цитировать
Match any "word" character: a-z, A-Z, 0-9 or underscore (_).

Цитировать
"{a}" - повторить предыдущий символ (группу) ровно "a" раз. "\d{5}" соответствует пятикратному повтору цифрового символа (12345 55555 00000).
Мне кажется лучше придерживаться справке, там используется x,y, так будет понятнее.

P.S
Когда уроки закончатся, дай мне знать, я отделю всё в отдельную закрытую тему (чтобы в ней были только уроки), а в этой останется только обсуждение.

Оффлайн Redline [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 506
  • Репутация: 369
  • Пол: Мужской
    • Награды
CreatoR
Именно вертикальная табуляция (ну может у нее есть другое название "вертикальный пробел"  :wacko:).
С этими типографскими терминами черт ногу сломит:
http://ru.wikipedia.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D1%8F%D1%8E%D1%89%D0%B8%D0%B5_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B
0B LINE TABULATION (vertical tabulation) вертикальная табуляция ^K \v Перемещает позицию печати к следующей позиции вертикальной табуляции. На терминалах этот символ обычно эквивалентен переводу строки.Это оставлю как есть, остальное подправлю.

Кстати по поводу "\w" меня вот это с толку сбило:
http://autoit-script.ru/index.php?topic=1705.msg12225#msg12225

AZJIO
Спасибо. Все таки попытаюсь сделать для форума эксклюзивные и простые примеры, а заодно помучаю свой засохший мозг :)
« Последнее редактирование: Апрель 21, 2011, 16:40:37 от Redline »

Оффлайн zlo-kazan [?]

  • Скриптер
  • ****
  • Сообщений: 374
  • Репутация: 100
  • Пол: Мужской
    • Награды
 :laugh: Я первый кто дочитал до конца!!!  :king:
Вконце пример без тега [autoit[/autoit]

Русское сообщество AutoIt


Оффлайн Belfigor [?]

  • Локальный модератор
  • *
  • Сообщений: 3543
  • Репутация: 929
    • Награды
  • Версия AutoIt: 3.3.14.0
А сделайте ссылки в первом посте на все уроки выложенные в этой теме :).
В идеале убрать урок из первого поста и вынести в любое другое сообщение темы, в первом посте указать ссылки на все выложенные уроки (этакое содержание), и краткие комментарии или какую-то другую информацию не касающуюся какого-то конкретного урока и закрепить первое сообщение шапкой темы, ну а при развитии темы закрепить ее в разделе :)

Любые темы внутри раздела "Разработка ботов" не названные в соответствии с правилами раздела, будут закрываться.
Хорошая музыка должна вызывать тахикардию.
Исландский реп, самый правильный реп.

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Redline  [?]
Цитировать
по поводу "\w" меня вот это с толку сбило
Да, там другое имелось в виду (что для русских букв нужно указывать «а-я», кстати про «ё» я и не знал).

zlo-kazan  [?]
Цитировать
Я первый кто дочитал до конца
А середину видимо не читал...

Цитировать
Вконце пример без тега
В середине тоже (там где «"\B" - не граница слова.»).

:)

Belfigor  [?]
Цитировать
сделайте ссылки в первом посте на все уроки выложенные в этой теме
Лишняя работа (пока), я же написал:

[?]
Цитировать
Когда уроки закончатся, дай мне знать, я отделю всё в отдельную закрытую тему

Оффлайн Redline [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 506
  • Репутация: 369
  • Пол: Мужской
    • Награды
Добавил недостающие тэги.
В раздел метасимволы/"[ ]"
внес отдельный блок по букве "ё" при работе с диапазонами, где привел своё мини-исследование   :graduated:

Позже напишу два небольших урока уложился в один. А дальше будут практические уроки   :reading_book: по выбору инструмента RegExp для конкретной задачи, анализу обрабатываемого текста, выявлению ключевых мест в тексте и непосредственно по составлению шаблонов.

Добавил описание для "\E" и "\Q"
« Последнее редактирование: Июнь 04, 2011, 08:40:55 от Redline »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Redline  [?]
Цитировать
внес отдельный блок по букве "ё"
Не знал про ё(Ё), спасибо.  :)

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Redline  [?]
Цитировать
Не путать с грехами
:rofl:    :beer:

Оффлайн axlwor [?]

  • Скриптер
  • ****
  • Сообщений: 657
  • Репутация: 147
    • Награды
А можно в первом посте поставить ссылки на другие уроки? А то я долго считал, что урок один :'(

Оффлайн AZJIO [?]

  • VIP
  • *
  • Сообщений: 2740
  • Репутация: 1143
    • мой сайт
    • Награды
  • Версия AutoIt: 3.3.8.1
Redline
Это (?=(?:[^\s]+=|$))
можно записать так
(?=[^\s]+=|$)
так как (?: означает группу не входящую в поиск, но и (?= также не входит в поиск. И результат одинаковый.
Кстати при использовании многострочного текста и (?m) нужно учитывать, что возврат каретки перед $ может попасть в захват, то есть (?m)^(.*)$ захватывает текст и символ @CR (\r)

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
259 Ответов
131698 Просмотров
Последний ответ Март 18, 2019, 14:15:25
от ЭйчЭйч
21 Ответов
13428 Просмотров
Последний ответ Август 12, 2011, 16:50:58
от Odinvasya
3 Ответов
4495 Просмотров
Последний ответ Август 18, 2010, 17:25:05
от madmasles
58 Ответов
64495 Просмотров
Последний ответ Апрель 28, 2015, 23:23:16
от Ziggurat
 Закреплено  Обсуждение конкурсов

Автор Medic84 « 1 2 » Конкурсы

23 Ответов
23932 Просмотров
Последний ответ Июль 02, 2012, 10:44:52
от C2H5OH
30 Ответов
18297 Просмотров
Последний ответ Апрель 02, 2012, 03:44:53
от Garrett
7 Ответов
5237 Просмотров
Последний ответ Март 14, 2013, 00:26:06
от Kaster
2 Ответов
5620 Просмотров
Последний ответ Январь 25, 2016, 02:48:12
от CreatoR
0 Ответов
8573 Просмотров
Последний ответ Январь 25, 2016, 02:46:42
от CreatoR
3 Ответов
672 Просмотров
Последний ответ Март 27, 2019, 22:40:21
от CreatoR