Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поговорим про RegExp? - Страница 2 - Мир MS Excel

Старая форма входа
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поговорим про RegExp? (Подготовка для топика FAQ по RegExp в Готовых решениях)
Поговорим про RegExp?
Alex_ST Дата: Четверг, 24.11.2011, 12:13 | Сообщение № 21
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
nilem,
вообще-то, насколько я уже "просвещён", метод Execute, примененный к объекту RegExp, создаёт объект MatchCollection - коллекцию найденных подстрок - объектов Match.
Поэтому, в своём коде[vba]
Код
        With .Execute(s)
              For i = 0 To .Count - 1
                  MsgBox .Item(i)
              Next i
          End With
[/vba] ты скорее всего перебираешь объекты Match и выводишь в MsgBox их свойства по умолчанию - Value
А SubMatch - это одно из свойств каждого Match … Ну, по крайней мере, это следует из объектной модели:

К сообщению приложен файл: 3930492.jpg (13.3 Kb) · 2113160.jpg (9.9 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениеnilem,
вообще-то, насколько я уже "просвещён", метод Execute, примененный к объекту RegExp, создаёт объект MatchCollection - коллекцию найденных подстрок - объектов Match.
Поэтому, в своём коде[vba]
Код
        With .Execute(s)
              For i = 0 To .Count - 1
                  MsgBox .Item(i)
              Next i
          End With
[/vba] ты скорее всего перебираешь объекты Match и выводишь в MsgBox их свойства по умолчанию - Value
А SubMatch - это одно из свойств каждого Match … Ну, по крайней мере, это следует из объектной модели:


Автор - Alex_ST
Дата добавления - 24.11.2011 в 12:13
nilem Дата: Четверг, 24.11.2011, 12:43 | Сообщение № 22
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Ну да, видимо, напутал с определениями. Надо почитать капитально. Углубляемся smile


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеНу да, видимо, напутал с определениями. Надо почитать капитально. Углубляемся smile

Автор - nilem
Дата добавления - 24.11.2011 в 12:43
v__step Дата: Четверг, 24.11.2011, 13:35 | Сообщение № 23
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Есть первый сырой результат по SubMatches!

Для того, чтобы задействовать это свойство, нужен особый шаблон - с дополнительными скобками
Например, (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
Эти скобки в общем, не нужны, и применены исключительно для возможности задействовать SubMatches
Для строки 100.200.300.400 поиск по шаблону даст один Match - целиком всю строку
Но поскольку шаблон содержал скобки, для этого единственного Match появится коллекция SubMatches в количестве равном числу скобок: 100; 200; 300; и 400
Если бы вхождений было больше 1, для каждого Match появилась бы соответствующая коллекция
Видать, пора писать еще 1 функцию, которая будет возвращать SubMatches - это сильный инструмент!


С уважением, Владимир

Сообщение отредактировал v__step - Четверг, 24.11.2011, 13:38
 
Ответить
СообщениеЕсть первый сырой результат по SubMatches!

Для того, чтобы задействовать это свойство, нужен особый шаблон - с дополнительными скобками
Например, (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
Эти скобки в общем, не нужны, и применены исключительно для возможности задействовать SubMatches
Для строки 100.200.300.400 поиск по шаблону даст один Match - целиком всю строку
Но поскольку шаблон содержал скобки, для этого единственного Match появится коллекция SubMatches в количестве равном числу скобок: 100; 200; 300; и 400
Если бы вхождений было больше 1, для каждого Match появилась бы соответствующая коллекция
Видать, пора писать еще 1 функцию, которая будет возвращать SubMatches - это сильный инструмент!

Автор - v__step
Дата добавления - 24.11.2011 в 13:35
v__step Дата: Четверг, 24.11.2011, 14:43 | Сообщение № 24
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Кажется, заработали SubMatches
К сообщению приложен файл: 1409898.zip (72.1 Kb)


С уважением, Владимир
 
Ответить
СообщениеКажется, заработали SubMatches

Автор - v__step
Дата добавления - 24.11.2011 в 14:43
Alex_ST Дата: Пятница, 25.11.2011, 14:01 | Сообщение № 25
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Народ, кто там разобрался хорошо с SubMatches?
Способны просто, "на пальцах", объяснить что такое SubMatches ?

Я практически закончил свой файл-подсказку по RegExp , но остались не описанными объекты SubMatches …
Сейчас просто некогда лезть в литературу и самостоятельно разбираться.
Я здесь прикладываю только один лист, где описаны свойства и методы.
Посмотрите, пожалуйста, не наврал ли где-нибудь?
Особое внимание - на примеры в тексте (я их даже не проверял и даже не просматривал, а просто копировал из аглицкого описания). Надо потом будет там и комментарии перевести.

Времени нет. На работе нужно срочно переносить свои данные со старого компа под ХРюшей на новый на Семёрке angry
К сообщению приложен файл: RegExp_25_12_11.zip (68.7 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеНарод, кто там разобрался хорошо с SubMatches?
Способны просто, "на пальцах", объяснить что такое SubMatches ?

Я практически закончил свой файл-подсказку по RegExp , но остались не описанными объекты SubMatches …
Сейчас просто некогда лезть в литературу и самостоятельно разбираться.
Я здесь прикладываю только один лист, где описаны свойства и методы.
Посмотрите, пожалуйста, не наврал ли где-нибудь?
Особое внимание - на примеры в тексте (я их даже не проверял и даже не просматривал, а просто копировал из аглицкого описания). Надо потом будет там и комментарии перевести.

Времени нет. На работе нужно срочно переносить свои данные со старого компа под ХРюшей на новый на Семёрке angry

Автор - Alex_ST
Дата добавления - 25.11.2011 в 14:01
v__step Дата: Пятница, 25.11.2011, 14:11 | Сообщение № 26
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Лёш, принцип работы SubMatches см. пост 23
Я подсуетился и уже приложил к посту 24 книгу с новой функцией, обрабатывающей SubMatches
Она работает и подтверждает и то, что написано в посте 23
Могу сегодня соответственно подправить твой файл (пост 25)
Комментарии к формулам я наполовину перевел
На выходные обязательно добью


С уважением, Владимир

Сообщение отредактировал v__step - Пятница, 25.11.2011, 14:31
 
Ответить
СообщениеЛёш, принцип работы SubMatches см. пост 23
Я подсуетился и уже приложил к посту 24 книгу с новой функцией, обрабатывающей SubMatches
Она работает и подтверждает и то, что написано в посте 23
Могу сегодня соответственно подправить твой файл (пост 25)
Комментарии к формулам я наполовину перевел
На выходные обязательно добью

Автор - v__step
Дата добавления - 25.11.2011 в 14:11
Alex_ST Дата: Пятница, 25.11.2011, 15:10 | Сообщение № 27
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Quote (v__step)
Например, (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
Эти скобки в общем, не нужны, и применены исключительно для возможности задействовать SubMatches
Для строки 100.200.300.400 поиск по шаблону даст один Match - целиком всю строку
Но поскольку шаблон содержал скобки, для этого единственного Match появится коллекция SubMatches в количестве равном числу скобок: 100; 200; 300; и 400
Если бы вхождений было больше 1, для каждого Match появилась бы соответствующая коллекция

Блин!
Ну ведь просил же объяснить ПРОСТО! В ДВУХ-ТРЕХ СЛОВАХ!
Извини, конечно, но для меня, только-только осваивающего RgExp, что (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}), что \d{1,3} - однофигственно!



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщение
Quote (v__step)
Например, (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})
Эти скобки в общем, не нужны, и применены исключительно для возможности задействовать SubMatches
Для строки 100.200.300.400 поиск по шаблону даст один Match - целиком всю строку
Но поскольку шаблон содержал скобки, для этого единственного Match появится коллекция SubMatches в количестве равном числу скобок: 100; 200; 300; и 400
Если бы вхождений было больше 1, для каждого Match появилась бы соответствующая коллекция

Блин!
Ну ведь просил же объяснить ПРОСТО! В ДВУХ-ТРЕХ СЛОВАХ!
Извини, конечно, но для меня, только-только осваивающего RgExp, что (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3}), что \d{1,3} - однофигственно!

Автор - Alex_ST
Дата добавления - 25.11.2011 в 15:10
v__step Дата: Пятница, 25.11.2011, 16:14 | Сообщение № 28
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Спокойно, сейчас разберемся
Пример не мой и первый попавшийся, поэтому не самый простой но...
В шаблоне записана вот такая просьба к RegEx:
(любое число, состоящее из 3-х цифр)точка(любое число, состоящее из 3-х цифр)точка(любое число, состоящее из 3-х цифр)точка(любое число, состоящее из 3-х цифр)
А чтобы посмотреть, что из этого получится, надо открыть последний тестер из поста 24 - там этот пример как раз и заряжен (я сдублировал в этот пост)

Пробую упростить:
Строка: "мне ни черта не понятно"
Шаблон: "(мне )(ни )(черта )(не )"
Вбиваем в тестер там, где пример с SubMatches, и смотрим результат
Тестер гораздо красноречивее всех выкладок (живой, однако)

А вот если убрать скобки (они использовались специально для создания SubMatches, то никаких SubMatches не появится
К сообщению приложен файл: 4307501.zip (72.4 Kb)


С уважением, Владимир

Сообщение отредактировал v__step - Пятница, 25.11.2011, 16:31
 
Ответить
СообщениеСпокойно, сейчас разберемся
Пример не мой и первый попавшийся, поэтому не самый простой но...
В шаблоне записана вот такая просьба к RegEx:
(любое число, состоящее из 3-х цифр)точка(любое число, состоящее из 3-х цифр)точка(любое число, состоящее из 3-х цифр)точка(любое число, состоящее из 3-х цифр)
А чтобы посмотреть, что из этого получится, надо открыть последний тестер из поста 24 - там этот пример как раз и заряжен (я сдублировал в этот пост)

Пробую упростить:
Строка: "мне ни черта не понятно"
Шаблон: "(мне )(ни )(черта )(не )"
Вбиваем в тестер там, где пример с SubMatches, и смотрим результат
Тестер гораздо красноречивее всех выкладок (живой, однако)

А вот если убрать скобки (они использовались специально для создания SubMatches, то никаких SubMatches не появится

Автор - v__step
Дата добавления - 25.11.2011 в 16:14
v__step Дата: Понедельник, 28.11.2011, 00:17 | Сообщение № 29
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

На ближайшие несколько дней со временем будет очень плохо
На отдельном листе добавил описание SubMatches
Не надо зацикливаться на SubMatches (подвыражениях) - это частный вопрос
Подвыражения в скобках используются в основном "на месте" - непосредственно в шаблонах, а их разбор в VBA - дополнительная, редко используемая функция
Комментарии к функциям перевести не успел, но это надо делать в последнюю очередь - в этих функциях нет ничего принципиально нового
Придется править примеры VBA - они составлялись в какой-то дремучей версии VB

Желательно сократить теоретические разделы в пользу примеров
Поэтому
Добавил 3 новых листа с живыми примерами (на 1 листе это разместить невозможно) Один из листов посвящен нашумевшим, но не очень интересным SubMatches
Добавил функцию выделения результата (при выделенной ячейке с текстом надо нажать F12 - см. замечания в заголовках)
Это очень помогает, т.к. важно видеть - где именно расположены вхождения
К сообщению приложен файл: _RegExp_25_12_1.zip (68.9 Kb) · _RegExp_27_11_1.zip (76.0 Kb)


С уважением, Владимир

Сообщение отредактировал v__step - Понедельник, 28.11.2011, 00:21
 
Ответить
СообщениеНа ближайшие несколько дней со временем будет очень плохо
На отдельном листе добавил описание SubMatches
Не надо зацикливаться на SubMatches (подвыражениях) - это частный вопрос
Подвыражения в скобках используются в основном "на месте" - непосредственно в шаблонах, а их разбор в VBA - дополнительная, редко используемая функция
Комментарии к функциям перевести не успел, но это надо делать в последнюю очередь - в этих функциях нет ничего принципиально нового
Придется править примеры VBA - они составлялись в какой-то дремучей версии VB

Желательно сократить теоретические разделы в пользу примеров
Поэтому
Добавил 3 новых листа с живыми примерами (на 1 листе это разместить невозможно) Один из листов посвящен нашумевшим, но не очень интересным SubMatches
Добавил функцию выделения результата (при выделенной ячейке с текстом надо нажать F12 - см. замечания в заголовках)
Это очень помогает, т.к. важно видеть - где именно расположены вхождения

Автор - v__step
Дата добавления - 28.11.2011 в 00:17
v__step Дата: Среда, 30.11.2011, 10:26 | Сообщение № 30
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Ура! Командировку отменили, так что вечером дома продолжу
Несколько доработок:
Теперь при каждом запуске книги ссылка на библиотеку VBScript_RegExp_55 будет в случае повреждения восстановлена
Если библиотеки нет, будет попытка установить VBScript_RegExp_10
Если и это не сработает, процедура выдаст сообщение
В последнем случае не поможет и позднее связывание

Пополнил и немного откорректировал примеры
Для функции, возвращающей SubMatches, ввел аргумент - № обрабатываемого вхождения и перестал обрабатывать все вхождения сразу - так наглядней

На третий день зоркий сокол заметил: SubMatches - это давние знакомые - подвыражения, которые широко используются непосредственно в регулярных выражениях (в ссылках назад, при заменах)
Программно SubMatches использует у себя David Brett (та книга, на которую мы ссылались втроем) при обработке ссылок на ячейки
К сообщению приложен файл: _RegExp_30_11_1.zip (60.5 Kb)


С уважением, Владимир

Сообщение отредактировал v__step - Среда, 30.11.2011, 14:20
 
Ответить
СообщениеУра! Командировку отменили, так что вечером дома продолжу
Несколько доработок:
Теперь при каждом запуске книги ссылка на библиотеку VBScript_RegExp_55 будет в случае повреждения восстановлена
Если библиотеки нет, будет попытка установить VBScript_RegExp_10
Если и это не сработает, процедура выдаст сообщение
В последнем случае не поможет и позднее связывание

Пополнил и немного откорректировал примеры
Для функции, возвращающей SubMatches, ввел аргумент - № обрабатываемого вхождения и перестал обрабатывать все вхождения сразу - так наглядней

На третий день зоркий сокол заметил: SubMatches - это давние знакомые - подвыражения, которые широко используются непосредственно в регулярных выражениях (в ссылках назад, при заменах)
Программно SubMatches использует у себя David Brett (та книга, на которую мы ссылались втроем) при обработке ссылок на ячейки

Автор - v__step
Дата добавления - 30.11.2011 в 10:26
Alex_ST Дата: Среда, 30.11.2011, 14:26 | Сообщение № 31
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Володя, я посмотрел твой последний файл.
1. Увидел, что ты поработал с описанием метасимволов - СПАСИБО за помощь.
2. Понял, что мой последний файл из сообщения № 25 с русским описанием объекта RegExp ты скорее всего вообще не посмотрел angry и поэтому в своём примере ты используешь мой исходный англоязычный вариант.
3. Листы-тестеры - это здорово! Надо разбираться в составлении сложных паттернов...

4. Долго не разбирался, но так ничего и не понял про SubMatches ... sad
Это коллекции, являющиеся одним из свойств каждого из объектов Match что ли?
А что является Item'ами этой коллекции? Ты утверждаешь, что это подстроки...
Но ведь и Match.Value - это тоже подстроки, соответствующие заданному Pattern
Что тогда такое подстрока подстроки? И что является Pattern'ом для выбора этих подстрок из подстроки...
В общем я совсем запутался в словах. А простым языком, "на пальцах" никто объяснить не может.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеВолодя, я посмотрел твой последний файл.
1. Увидел, что ты поработал с описанием метасимволов - СПАСИБО за помощь.
2. Понял, что мой последний файл из сообщения № 25 с русским описанием объекта RegExp ты скорее всего вообще не посмотрел angry и поэтому в своём примере ты используешь мой исходный англоязычный вариант.
3. Листы-тестеры - это здорово! Надо разбираться в составлении сложных паттернов...

4. Долго не разбирался, но так ничего и не понял про SubMatches ... sad
Это коллекции, являющиеся одним из свойств каждого из объектов Match что ли?
А что является Item'ами этой коллекции? Ты утверждаешь, что это подстроки...
Но ведь и Match.Value - это тоже подстроки, соответствующие заданному Pattern
Что тогда такое подстрока подстроки? И что является Pattern'ом для выбора этих подстрок из подстроки...
В общем я совсем запутался в словах. А простым языком, "на пальцах" никто объяснить не может.

Автор - Alex_ST
Дата добавления - 30.11.2011 в 14:26
v__step Дата: Среда, 30.11.2011, 14:33 | Сообщение № 32
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

На ближайшее время планы такие:
- для прекращения борьбы идей (позднее или ранне связывание), хочу сделать 2 независимых модуля с разными типами связывания
- хочу сделать динамическую справку (на листе с описанием метасимволов при выделении ячейки сразу будет отображаться несколько соответствующих примеров из других листов)
- есть желание переписать почти все примеры кода (сейчас там много лишнего и непонятного)
- надо перевести комментарии к функциям Patrick Matthews (помню)
- придется позаботиться о размере книги. Она сильно разбухла и при добавлении листа с описаниями объектов даже в зазипованном виде превышает ограничения по присоединяемым файлам
Возможно, все-таки книгу придется бить на две...


С уважением, Владимир

Сообщение отредактировал v__step - Среда, 30.11.2011, 22:27
 
Ответить
СообщениеНа ближайшее время планы такие:
- для прекращения борьбы идей (позднее или ранне связывание), хочу сделать 2 независимых модуля с разными типами связывания
- хочу сделать динамическую справку (на листе с описанием метасимволов при выделении ячейки сразу будет отображаться несколько соответствующих примеров из других листов)
- есть желание переписать почти все примеры кода (сейчас там много лишнего и непонятного)
- надо перевести комментарии к функциям Patrick Matthews (помню)
- придется позаботиться о размере книги. Она сильно разбухла и при добавлении листа с описаниями объектов даже в зазипованном виде превышает ограничения по присоединяемым файлам
Возможно, все-таки книгу придется бить на две...

Автор - v__step
Дата добавления - 30.11.2011 в 14:33
v__step Дата: Среда, 30.11.2011, 14:43 | Сообщение № 33
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Quote (Alex_ST)
Что тогда такое подстрока подстроки?
Да, подстрока подстроки
Quote (Alex_ST)
что является Pattern'ом для выбора этих подстрок
То, что заключено в скобки - каждая пара скобок - ПодШаблон для ПодВыражения
Лёш, без примеров как без бутылки - я же добавил функцию и лист - открываем, пробуем, экспериментируем
Без подвыражений в RegExp ни шагу - мимо не пройдешь, поэтому разобраться придется...

К посту 29 приложен твой русскоязычный лист уже с правкой в отношении SubMatch


С уважением, Владимир
 
Ответить
Сообщение
Quote (Alex_ST)
Что тогда такое подстрока подстроки?
Да, подстрока подстроки
Quote (Alex_ST)
что является Pattern'ом для выбора этих подстрок
То, что заключено в скобки - каждая пара скобок - ПодШаблон для ПодВыражения
Лёш, без примеров как без бутылки - я же добавил функцию и лист - открываем, пробуем, экспериментируем
Без подвыражений в RegExp ни шагу - мимо не пройдешь, поэтому разобраться придется...

К посту 29 приложен твой русскоязычный лист уже с правкой в отношении SubMatch

Автор - v__step
Дата добавления - 30.11.2011 в 14:43
Alex_ST Дата: Среда, 30.11.2011, 15:19 | Сообщение № 34
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Да, файлы из поста №29 я не посмотрел sad
Решил, что в №30 ты выложил то же самое, но подправленное.
Внёс в свой файл. Убрал англоязычный лист (чтобы меньше весило).
Начал разбираться в метасимволах и нашёл у тебя дубль:
\n Соответствует символу перевода строки (LF)
\n n — положительное число. Соответствует n-ной запомненной подстроке. Вычисляется путем подсчета левых круглых скобок. Если левых скобок до этого символа меньше, чем n, то эквивалентно \0n
???



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеДа, файлы из поста №29 я не посмотрел sad
Решил, что в №30 ты выложил то же самое, но подправленное.
Внёс в свой файл. Убрал англоязычный лист (чтобы меньше весило).
Начал разбираться в метасимволах и нашёл у тебя дубль:
\n Соответствует символу перевода строки (LF)
\n n — положительное число. Соответствует n-ной запомненной подстроке. Вычисляется путем подсчета левых круглых скобок. Если левых скобок до этого символа меньше, чем n, то эквивалентно \0n
???

Автор - Alex_ST
Дата добавления - 30.11.2011 в 15:19
Alex_ST Дата: Среда, 30.11.2011, 15:20 | Сообщение № 35
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Я понимаю, что это как раз из-за SubMatches, но как это описать понятно текстом???



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЯ понимаю, что это как раз из-за SubMatches, но как это описать понятно текстом???

Автор - Alex_ST
Дата добавления - 30.11.2011 в 15:20
v__step Дата: Среда, 30.11.2011, 15:44 | Сообщение № 36
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Quote (Alex_ST)
\0n ???
Речь идет об использовании ссылок на подвыражения непосредственно в шаблоне (это т.н. ссылка назад)
Да, при этом обязательно используются подвыражения - сначала они создаются, а потом на них ссылаются так:
\1 - ссылка на 1-е подвыражение; \2 - ссылка на 2-е подвыражение и т.д.
Например, шаблон (qwe)(asd)\2 содержит два подвыражения и одну ссылку назад на второе подвыражение
Этому шаблону соответствует строка qweasdasd

Кто же автор этой путаницы?!
Разве это нормально - подавать серьезный и сложный материал в одной строке?
Изучать RegExp по непроверенным источникам = получить комплекс неполноценности.

Все, что связано с подвыражениями (кроме использования свойства SubMatches в коде) - ссылки назад, замены по шаблону и т.д. очень хорошо подано в книге Форты
Кое-что уже есть и в нашей книге. Потихоньку наведем порядок, но не нахрапом!

Сейчас я пытаюсь хоть как-то упорядочить данные на листе Метасимволы (неправильное название - там есть много чего кроме метасимволов)
Многие строки перенес вниз (не убил) - те, что спорные и непроверенные


С уважением, Владимир

Сообщение отредактировал v__step - Среда, 30.11.2011, 22:26
 
Ответить
Сообщение
Quote (Alex_ST)
\0n ???
Речь идет об использовании ссылок на подвыражения непосредственно в шаблоне (это т.н. ссылка назад)
Да, при этом обязательно используются подвыражения - сначала они создаются, а потом на них ссылаются так:
\1 - ссылка на 1-е подвыражение; \2 - ссылка на 2-е подвыражение и т.д.
Например, шаблон (qwe)(asd)\2 содержит два подвыражения и одну ссылку назад на второе подвыражение
Этому шаблону соответствует строка qweasdasd

Кто же автор этой путаницы?!
Разве это нормально - подавать серьезный и сложный материал в одной строке?
Изучать RegExp по непроверенным источникам = получить комплекс неполноценности.

Все, что связано с подвыражениями (кроме использования свойства SubMatches в коде) - ссылки назад, замены по шаблону и т.д. очень хорошо подано в книге Форты
Кое-что уже есть и в нашей книге. Потихоньку наведем порядок, но не нахрапом!

Сейчас я пытаюсь хоть как-то упорядочить данные на листе Метасимволы (неправильное название - там есть много чего кроме метасимволов)
Многие строки перенес вниз (не убил) - те, что спорные и непроверенные

Автор - v__step
Дата добавления - 30.11.2011 в 15:44
v__step Дата: Пятница, 02.12.2011, 13:10 | Сообщение № 37
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Текущий рабочий файл
Очень много вынужденных изменений на листе с описанием метасимволов и на листах с "живыми примерами"
Все складывается естественно: накопилось критическое число сбойных ситуаций, от них просто рябит в глазах, поэтому я сгруппировал их ниже основного текста
На листе с описаниями, в основном, привел теримны в соответствие с Фортой и Фриддлом

Лёш, желательно было бы получить от тебя последний вариант листа с VBA-текстовкой, чтобы попробовать написать другие демо-процедуры
К сообщению приложен файл: _RegExp-01_12_1.zip (56.0 Kb)


С уважением, Владимир

Сообщение отредактировал v__step - Пятница, 02.12.2011, 13:34
 
Ответить
СообщениеТекущий рабочий файл
Очень много вынужденных изменений на листе с описанием метасимволов и на листах с "живыми примерами"
Все складывается естественно: накопилось критическое число сбойных ситуаций, от них просто рябит в глазах, поэтому я сгруппировал их ниже основного текста
На листе с описаниями, в основном, привел теримны в соответствие с Фортой и Фриддлом

Лёш, желательно было бы получить от тебя последний вариант листа с VBA-текстовкой, чтобы попробовать написать другие демо-процедуры

Автор - v__step
Дата добавления - 02.12.2011 в 13:10
Alex_ST Дата: Суббота, 03.12.2011, 20:43 | Сообщение № 38
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Привет, Володя!
У меня на работе завал образовался из-за моего простоя по причине переноса всего накопленного за долгие годы на новый комп, на котором стоит Win7 вместо любимой ХРюши на старом...
"Семёркин" интерфейс не нравится абсолютно... Пришлось её полностью "перелицовывать" чтобы выглядела хотя бы как ХРюша... Получилось очень похоже. Правда, некоторые программы не пошли sad
Так что разбираться с твоим последним примером было некогда...
А мой последний файл почему-то вдруг "ожирел" до такой степени, что даже в архиве не лезет на форум (провести "фитнесс" даже не пробовал-было некогда)
Пришлось выложить на файлообменник: Объект RegExp 02_12_11.xls
Заранее предупреждаю: лист с метасимволами я пока под твой крайний вариант не правил, а только слил старое из двух источников и отсортировал по возрастанию чтобы описания встали рядом и бОльшую часть уже объединил. Осталось только несколько символов с задвоением описаний.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеПривет, Володя!
У меня на работе завал образовался из-за моего простоя по причине переноса всего накопленного за долгие годы на новый комп, на котором стоит Win7 вместо любимой ХРюши на старом...
"Семёркин" интерфейс не нравится абсолютно... Пришлось её полностью "перелицовывать" чтобы выглядела хотя бы как ХРюша... Получилось очень похоже. Правда, некоторые программы не пошли sad
Так что разбираться с твоим последним примером было некогда...
А мой последний файл почему-то вдруг "ожирел" до такой степени, что даже в архиве не лезет на форум (провести "фитнесс" даже не пробовал-было некогда)
Пришлось выложить на файлообменник: Объект RegExp 02_12_11.xls
Заранее предупреждаю: лист с метасимволами я пока под твой крайний вариант не правил, а только слил старое из двух источников и отсортировал по возрастанию чтобы описания встали рядом и бОльшую часть уже объединил. Осталось только несколько символов с задвоением описаний.

Автор - Alex_ST
Дата добавления - 03.12.2011 в 20:43
v__step Дата: Воскресенье, 04.12.2011, 13:38 | Сообщение № 39
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Лёша, привет!
Ты вышел на связь очень вовремя - твой лист пригодится - сегодня есть редкая возможность поработать!
Весь вторник буду отсутствовать - еду в командировку в Киев

Дело идет к разделению материала на 2 файла, и это нормально smile Фитнес не помогает (я пробовал). Очень много места занимают рисунки

Будет очень много переделок, в том числе на листе с метасимволами, ничего не поделаешь, все по-честному - выстрадано
Пока что набираем гору мусора. Упорядочение, критика, конструктив - все потом
Контрольный срок текущего рабочего варианта - понедельник

Скоро будем финишировать, т.к. эта тема уходит в бесконечность, а времени в обрез sad


С уважением, Владимир

Сообщение отредактировал v__step - Воскресенье, 04.12.2011, 13:40
 
Ответить
СообщениеЛёша, привет!
Ты вышел на связь очень вовремя - твой лист пригодится - сегодня есть редкая возможность поработать!
Весь вторник буду отсутствовать - еду в командировку в Киев

Дело идет к разделению материала на 2 файла, и это нормально smile Фитнес не помогает (я пробовал). Очень много места занимают рисунки

Будет очень много переделок, в том числе на листе с метасимволами, ничего не поделаешь, все по-честному - выстрадано
Пока что набираем гору мусора. Упорядочение, критика, конструктив - все потом
Контрольный срок текущего рабочего варианта - понедельник

Скоро будем финишировать, т.к. эта тема уходит в бесконечность, а времени в обрез sad

Автор - v__step
Дата добавления - 04.12.2011 в 13:38
Alex_ST Дата: Воскресенье, 04.12.2011, 20:12 | Сообщение № 40
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3206
Репутация: 609 ±
Замечаний: 0% ±

2003
Володя, привет!
Вообще-то я не пробовал удалять рисунки и взвешивать после этого файл... Ведь картинки-то эти - обычные скриншоты, да к тому же ещё и обрезанные. Поэтому весить они должны совсем чуть-чуть.
Я к стати, ещё пока верстал файл, обратил внимание, что он заметно распух после ввода группы и структуры...
Неужели эта ерунда столько весит? Правда, я её несколько раз переделывал. Может, следы редактирования уровней вложенности где-то остались?
Завтра на работе в перерыве поэкспериментирую: уберу всю карсоту и постепенно начну её вводить. Посмотрю, что вызывает ожирение. Пригодится для продолжения темы фитнеса.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеВолодя, привет!
Вообще-то я не пробовал удалять рисунки и взвешивать после этого файл... Ведь картинки-то эти - обычные скриншоты, да к тому же ещё и обрезанные. Поэтому весить они должны совсем чуть-чуть.
Я к стати, ещё пока верстал файл, обратил внимание, что он заметно распух после ввода группы и структуры...
Неужели эта ерунда столько весит? Правда, я её несколько раз переделывал. Может, следы редактирования уровней вложенности где-то остались?
Завтра на работе в перерыве поэкспериментирую: уберу всю карсоту и постепенно начну её вводить. Посмотрю, что вызывает ожирение. Пригодится для продолжения темы фитнеса.

Автор - Alex_ST
Дата добавления - 04.12.2011 в 20:12
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Поговорим про RegExp? (Подготовка для топика FAQ по RegExp в Готовых решениях)
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!