RegExp - очень мощный инструмент обработки текстов. Но у него достаточно сложный для начинающих cинтаксис. Вот, например, есть статья "Синтаксис регулярных выражений" Но всё-таки хотелось бы чтобы кто-нибудь из хорошо знающих тему помог освоить предмет. Вот, например, я знаю, что v__step имеет опыт работы с RegExp и готов поделиться примерами. Для затравки прошу его выложить здесь свой пример-тестер RegExp А дальше мы уж его помучаем вопросами в тему.
RegExp - очень мощный инструмент обработки текстов. Но у него достаточно сложный для начинающих cинтаксис. Вот, например, есть статья "Синтаксис регулярных выражений" Но всё-таки хотелось бы чтобы кто-нибудь из хорошо знающих тему помог освоить предмет. Вот, например, я знаю, что v__step имеет опыт работы с RegExp и готов поделиться примерами. Для затравки прошу его выложить здесь свой пример-тестер RegExp А дальше мы уж его помучаем вопросами в тему.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Понедельник, 21.11.2011, 21:18
Спасибо за приглашение! Тестер, естественно, сырой, но на то и форум - принимается любая критика, а лучше непосредственное участие в доработках
Нужен он потому, что RegExp сильны, но своенравны, и не всегда дружны с кириллицей Ничего лучшего придумать не смог, чем UDF (несколько пользовательских функций рабочего листа) В результате возможна любая компоновка данных и результатов, каскадные вычисления и т.д.
Тестер подходит для комментирования и обмена идеями Обратите внимание, кода почти нет - это эффект присутствия RegExp - они уничтожают код! Это голый король (вроде бы, что-то сделано, но что?)
Спасибо за приглашение! Тестер, естественно, сырой, но на то и форум - принимается любая критика, а лучше непосредственное участие в доработках
Нужен он потому, что RegExp сильны, но своенравны, и не всегда дружны с кириллицей Ничего лучшего придумать не смог, чем UDF (несколько пользовательских функций рабочего листа) В результате возможна любая компоновка данных и результатов, каскадные вычисления и т.д.
Тестер подходит для комментирования и обмена идеями Обратите внимание, кода почти нет - это эффект присутствия RegExp - они уничтожают код! Это голый король (вроде бы, что-то сделано, но что?)v__step
С уважением, Владимир
Сообщение отредактировал v__step - Понедельник, 21.11.2011, 23:18
Я один не вижу пример-тестер RegExp? Или это "это эффект присутствия RegExp - они уничтожают код!"?
Да, Сереж, это эффект RegExp) Скажу больше, помимо того, что он уничтожает код, он еще уничтожил и файл! Надо быть на чеку, а то и форум уничтожит)))
Quote (KuklP)
Я один не вижу пример-тестер RegExp? Или это "это эффект присутствия RegExp - они уничтожают код!"?
Да, Сереж, это эффект RegExp) Скажу больше, помимо того, что он уничтожает код, он еще уничтожил и файл! Надо быть на чеку, а то и форум уничтожит)))nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
Ну, пока Володя тает-исчезает-растворяется на работе я внесу свои пять копеек. Поискал вчера на торрентах рекомендованную им книжку: Бен Форта "Регулярные выражения (10 минут на урок)" в формате .pdf с OCR (Володя дал ссылку на скачивание с летитбита .djvu без OCR). Хотел добавить в книжку закладки и оглавление с гиперссылками чтобы было удобно юзать... С OCR не нашёл, но на РуТрекере качнул торрент Освой самостоятельно - Forta B. / Форта Б. - Regular Expressions / Регулярные выражения. 10 минут на урок [2005, PDF/CHM, RUS/ENG] PDF-файл там в скачанном пакете огромный, да ещё и защищённый (ну, это снять не проблема) - почти 170 Метров, т.к. не распознан (без OCR) и состоит просто из набора сканов, правда, с очень хорошим разрешением. Но зато в пакете ещё и "завалялось" кое-что другое ценное - дополнительные материалы к книге - .chm - файл справки (к сожалению только на английском) и набор программ-тестеров для обучения работе с RegExp Справка даже в архиве в топик не влезет (Серж, кажется, зачем-то поставил лимит в 100к на приаттачиваемые файлы). А вот пару программ-тестеров ловите в аттаче. P.S. Пока нет учителя я сам для себя нашёл Синтаксис регулярных выражений чтобы попытать тестеры.
Ну, пока Володя тает-исчезает-растворяется на работе я внесу свои пять копеек. Поискал вчера на торрентах рекомендованную им книжку: Бен Форта "Регулярные выражения (10 минут на урок)" в формате .pdf с OCR (Володя дал ссылку на скачивание с летитбита .djvu без OCR). Хотел добавить в книжку закладки и оглавление с гиперссылками чтобы было удобно юзать... С OCR не нашёл, но на РуТрекере качнул торрент Освой самостоятельно - Forta B. / Форта Б. - Regular Expressions / Регулярные выражения. 10 минут на урок [2005, PDF/CHM, RUS/ENG] PDF-файл там в скачанном пакете огромный, да ещё и защищённый (ну, это снять не проблема) - почти 170 Метров, т.к. не распознан (без OCR) и состоит просто из набора сканов, правда, с очень хорошим разрешением. Но зато в пакете ещё и "завалялось" кое-что другое ценное - дополнительные материалы к книге - .chm - файл справки (к сожалению только на английском) и набор программ-тестеров для обучения работе с RegExp Справка даже в архиве в топик не влезет (Серж, кажется, зачем-то поставил лимит в 100к на приаттачиваемые файлы). А вот пару программ-тестеров ловите в аттаче. P.S. Пока нет учителя я сам для себя нашёл Синтаксис регулярных выражений чтобы попытать тестеры.
Действительно, тестеров очень много, но этот написан на VBA для проверки кода VBA
Тестер выполнен как набор нескольких UDF В результате обеспечена свобода действий на листе Можно сотворить и прокомментировать, а главное, скомпоновать и сохранить невероятное количество проб и ошибок, умножить это все на число листов, книг, папок...
Свое учительство переадресовываю более уважаемым сенсеям, но могу поделиться всеми файлами, где я имел честь задействовать RegExp. Думаю, это будет ненавязчиво и интересно уважаемой публике
Первая ссылка в Inf-файле на сайт, где выложена книга.xls с открытым кодом, яркими примерами и Ole-Word вставкой с теоретическим разделом На других листах *Inf.xls небольшая подборка материалов по синтаксису RegExp и свойствам - методам RegExpObj.
Действительно, тестеров очень много, но этот написан на VBA для проверки кода VBA
Тестер выполнен как набор нескольких UDF В результате обеспечена свобода действий на листе Можно сотворить и прокомментировать, а главное, скомпоновать и сохранить невероятное количество проб и ошибок, умножить это все на число листов, книг, папок...
Свое учительство переадресовываю более уважаемым сенсеям, но могу поделиться всеми файлами, где я имел честь задействовать RegExp. Думаю, это будет ненавязчиво и интересно уважаемой публике
Первая ссылка в Inf-файле на сайт, где выложена книга.xls с открытым кодом, яркими примерами и Ole-Word вставкой с теоретическим разделом На других листах *Inf.xls небольшая подборка материалов по синтаксису RegExp и свойствам - методам RegExpObj.v__step
Т.к. с английским я на Вы, то пришлось сделать для себя файлик-учебник на основании данных из нескольких источников. Файл пока не закончен. Немного перевести осталось. Но на 90% уже готово. Гляньте, никаких свойств и методов не пропустил?
Т.к. с английским я на Вы, то пришлось сделать для себя файлик-учебник на основании данных из нескольких источников. Файл пока не закончен. Немного перевести осталось. Но на 90% уже готово. Гляньте, никаких свойств и методов не пропустил?Alex_ST
а вот это уже не честно! Я не дождался сегодня учителя и сам на основании выложенных им примеров проделал свою работу. Надеюсь, там ничего принципиально не изменилось?
И всё-таки ты, как знаток, посмотри мою работу и скажи, что я пропустил или не так понял? Про то, что Match Object кроме свойств FirstIndex, Length и Value имеет ещё и свойство SubMatches я где-то читал, но никакого пояснения и примеров применения нигде не нашёл
Володя, привет.
Quote (v__step)
Я немножко подправил ссылки в Inf.xls
а вот это уже не честно! Я не дождался сегодня учителя и сам на основании выложенных им примеров проделал свою работу. Надеюсь, там ничего принципиально не изменилось?
И всё-таки ты, как знаток, посмотри мою работу и скажи, что я пропустил или не так понял? Про то, что Match Object кроме свойств FirstIndex, Length и Value имеет ещё и свойство SubMatches я где-то читал, но никакого пояснения и примеров применения нигде не нашёл Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 24.11.2011, 12:15
Лёш, не ругайся, все безобидно, речь идет о нескольких гиперссылках на 1 листе файла Я хотел было сделать это в посте, но без всякой задней мысли потом решил по-другому Ссылки эти неплохие О существовании SubMatches знаю, но не более того, хотя это свойство, наверное очень сильное - разберемся с ним чуть позже Я просмотрел твои правки очень бегло - вижу, что работа проделана очень серьезная, и очень быстро, но детально не разбирался Лёш, как же мне быть, Серж не закроет тему Чистилки? Я заморозил ее в пользу RegExp (к сожалению, не могу раздвоиться, а так хочется ) Ничего не могу сделать, здесь придется попотеть. Материалы есть, но их надо "причесать" Тема связывания, действительно, отдельная, и мы можем достигнуть компромисс
Лёш, не ругайся, все безобидно, речь идет о нескольких гиперссылках на 1 листе файла Я хотел было сделать это в посте, но без всякой задней мысли потом решил по-другому Ссылки эти неплохие О существовании SubMatches знаю, но не более того, хотя это свойство, наверное очень сильное - разберемся с ним чуть позже Я просмотрел твои правки очень бегло - вижу, что работа проделана очень серьезная, и очень быстро, но детально не разбирался Лёш, как же мне быть, Серж не закроет тему Чистилки? Я заморозил ее в пользу RegExp (к сожалению, не могу раздвоиться, а так хочется ) Ничего не могу сделать, здесь придется попотеть. Материалы есть, но их надо "причесать" Тема связывания, действительно, отдельная, и мы можем достигнуть компромиссГость
Володя, это только на "Планете" капчу нужно вводить всем и всегда. А здесь, в "Миру", понять, что не залогинился очень просто: залогиненным капча не показывается и только "гости" должны её вводить чтобы отпоститься.
Ну, раз ты грубых ошибок в моей работе не углядел пока, а про SubMatches тоже ничего не знаешь, то я, пожалуй, в перерывах дел на работе продолжу заниматься своей "шпаргалкой".
Надо будет только её дополнить хорошим наглядным листом с примерами разных наиболее красивых и хитро работающих паттернов. Для этого я предполагаю воспользоваться файликом с примерами, которые я выложил в своём Сообщении № 11 (к стати, только сейчас заметил, что тот же пример на 3 часа раньше меня выложил nilem в Сообщении № 9 , а я так спешил под конец рабочего дня похвастаться своей находкой, что не заметил этого).
А по поводу Чистилки, так пусть немного отлежится. Серж топик не залочит. Не за что. А нам надо от неё ненадолго отвлечься чтобы потом рассмотреть не "замыленным" взглядом.
Володя, это только на "Планете" капчу нужно вводить всем и всегда. А здесь, в "Миру", понять, что не залогинился очень просто: залогиненным капча не показывается и только "гости" должны её вводить чтобы отпоститься.
Ну, раз ты грубых ошибок в моей работе не углядел пока, а про SubMatches тоже ничего не знаешь, то я, пожалуй, в перерывах дел на работе продолжу заниматься своей "шпаргалкой".
Надо будет только её дополнить хорошим наглядным листом с примерами разных наиболее красивых и хитро работающих паттернов. Для этого я предполагаю воспользоваться файликом с примерами, которые я выложил в своём Сообщении № 11 (к стати, только сейчас заметил, что тот же пример на 3 часа раньше меня выложил nilem в Сообщении № 9 , а я так спешил под конец рабочего дня похвастаться своей находкой, что не заметил этого).
А по поводу Чистилки, так пусть немного отлежится. Серж топик не залочит. Не за что. А нам надо от неё ненадолго отвлечься чтобы потом рассмотреть не "замыленным" взглядом.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 24.11.2011, 08:54
objMatches и objSubMatch - это просто объектные переменные (так их обычно называют) objMatches - коллекция найденных подстрок, соответствующих шаблону, которая (коллекция) возвращается методом Execute objSubMatch - элемент этой коллекции со своими свойствами FirstIndex, Length и Value
Такой вот примерчик [vba]
Код
Sub test() Dim s As String, i As Long Dim objMatches As Object s = ActiveCell.Text With CreateObject("vbscript.regexp") .Global = True .Pattern = "(^|\s)[А-Я]{1}[А-Яа-я, -]+\." Set objMatches = .Execute(s) ' коллекция objMatches, агрегированный объект For i = 0 To objMatches.Count - 1 MsgBox objMatches.Item(i) ' а это элемент коллекции objSubMatch Next i End With'еще добавить =Nothing End Sub
[/vba]
Так выглядит симпатичнее: [vba]
Код
Sub test() Dim s As String, i As Long s = ActiveCell.Text With CreateObject("vbscript.regexp") .Global = True .Pattern = "(^|\s)[А-Я]{1}[А-Яа-я, -]+\." With .Execute(s) For i = 0 To .Count - 1 MsgBox .Item(i) Next i End With End With' =Nothing не нужно End Sub
[/vba]
objMatches и objSubMatch - это просто объектные переменные (так их обычно называют) objMatches - коллекция найденных подстрок, соответствующих шаблону, которая (коллекция) возвращается методом Execute objSubMatch - элемент этой коллекции со своими свойствами FirstIndex, Length и Value
Такой вот примерчик [vba]
Код
Sub test() Dim s As String, i As Long Dim objMatches As Object s = ActiveCell.Text With CreateObject("vbscript.regexp") .Global = True .Pattern = "(^|\s)[А-Я]{1}[А-Яа-я, -]+\." Set objMatches = .Execute(s) ' коллекция objMatches, агрегированный объект For i = 0 To objMatches.Count - 1 MsgBox objMatches.Item(i) ' а это элемент коллекции objSubMatch Next i End With'еще добавить =Nothing End Sub
[/vba]
Так выглядит симпатичнее: [vba]
Код
Sub test() Dim s As String, i As Long s = ActiveCell.Text With CreateObject("vbscript.regexp") .Global = True .Pattern = "(^|\s)[А-Я]{1}[А-Яа-я, -]+\." With .Execute(s) For i = 0 To .Count - 1 MsgBox .Item(i) Next i End With End With' =Nothing не нужно End Sub
На сайт, откуда взят этот пример, моя первая ссылка в отредактированном Inf.xls (ну точно, никто не открывал, а на источник лучше все-таки ссылаться) Я добавил еще 1 модуль с очень мощными функциями от Patrick G. Matthews Одна из них обрабатывает SubMatches Все это взято по первой ссылке из поста №12 Там же есть некоторые сведения по теории SubMatches и вообще прекрасная подборка информации Лёш, ты, все-таки, упорядочь ссылки (я уже не буду их трогать) С текстом на английском не заморачивайся - выдели то, что ты хочешь перевести - я переведу
Я уже почти не сомневаюсь в том, что все интересные примеры из теоретического раздела надо прогнать через тестер и зафиксировать результаты на листах Это будет не только проверка (часть запросто может не сработать), но и единообразное хорошее оформление
На сайт, откуда взят этот пример, моя первая ссылка в отредактированном Inf.xls (ну точно, никто не открывал, а на источник лучше все-таки ссылаться) Я добавил еще 1 модуль с очень мощными функциями от Patrick G. Matthews Одна из них обрабатывает SubMatches Все это взято по первой ссылке из поста №12 Там же есть некоторые сведения по теории SubMatches и вообще прекрасная подборка информации Лёш, ты, все-таки, упорядочь ссылки (я уже не буду их трогать) С текстом на английском не заморачивайся - выдели то, что ты хочешь перевести - я переведу
Я уже почти не сомневаюсь в том, что все интересные примеры из теоретического раздела надо прогнать через тестер и зафиксировать результаты на листах Это будет не только проверка (часть запросто может не сработать), но и единообразное хорошее оформлениеv__step
не, Володь, в том-то и смысл: когда я сам перевожу, то я в предмете должен сначала сам разобраться и понять его, а иначе сформулировать в правильную и понятную русскую фразу проосто невозможно. Это я так учусь, используя давно известную методику: "Чтобы что-то хорошо понять, попробуй доступно объяснить это кому-то другому"
Quote (v__step)
С текстом на английском не заморачивайся
не, Володь, в том-то и смысл: когда я сам перевожу, то я в предмете должен сначала сам разобраться и понять его, а иначе сформулировать в правильную и понятную русскую фразу проосто невозможно. Это я так учусь, используя давно известную методику: "Чтобы что-то хорошо понять, попробуй доступно объяснить это кому-то другому"Alex_ST
Молодец! Сейчас очередной раз совершил экскурсию по первой ссылке из поста 12 - не могу оторваться - там еще и отличные ссылки Самое интересное, что автор благодарит brettdj как учителя - того самого brettdj, кто есть автор книги, на которую мы втроем независимо сослались - у Вас его файл идет под именем RegExp_Sept_1_2)
Молодец! Сейчас очередной раз совершил экскурсию по первой ссылке из поста 12 - не могу оторваться - там еще и отличные ссылки Самое интересное, что автор благодарит brettdj как учителя - того самого brettdj, кто есть автор книги, на которую мы втроем независимо сослались - у Вас его файл идет под именем RegExp_Sept_1_2)v__step
С уважением, Владимир
Сообщение отредактировал v__step - Четверг, 24.11.2011, 12:08