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

Вход

Регистрация

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

 

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

Старая форма входа
Модератор форума: китин, _Boroda_  
Поговорим про RegExp?
Poltava Дата: Суббота, 09.02.2013, 23:59 | Сообщение № 241
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Если Вы настолько серьезно взялись тогда так
89162280864;89991112233;89162280864;89991112233;89991112233;89991112233 и так далее, строка содержащая все телефонные номера без повторов и лишниго мусора в виде скобочек тире пробелов...(в приведенной строке повторы не убирал)


Сообщение отредактировал Poltava - Воскресенье, 10.02.2013, 00:01
 
Ответить
СообщениеЕсли Вы настолько серьезно взялись тогда так
89162280864;89991112233;89162280864;89991112233;89991112233;89991112233 и так далее, строка содержащая все телефонные номера без повторов и лишниго мусора в виде скобочек тире пробелов...(в приведенной строке повторы не убирал)

Автор - Poltava
Дата добавления - 09.02.2013 в 23:59
ikki Дата: Воскресенье, 10.02.2013, 00:03 | Сообщение № 242
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
все номера одиннадцатизначные?

пс. мне кажется, проще написать новую регулярку.
по крайней мере - мне проще.
если честно - я и сам практически нуб в них sad


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениевсе номера одиннадцатизначные?

пс. мне кажется, проще написать новую регулярку.
по крайней мере - мне проще.
если честно - я и сам практически нуб в них sad

Автор - ikki
Дата добавления - 10.02.2013 в 00:03
Poltava Дата: Воскресенье, 10.02.2013, 00:14 | Сообщение № 243
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Должны теоретически! но это же люди! а они то 8 недописать легко могут так что такой 9162280864 тоже имеет право на существование причем 8 перед ним в результирующей строке добавлять не стоит, хотя если это упростит вам задачу то можно.
Если Вы нуб то о себе я вообще молчу!


Сообщение отредактировал Poltava - Воскресенье, 10.02.2013, 00:18
 
Ответить
СообщениеДолжны теоретически! но это же люди! а они то 8 недописать легко могут так что такой 9162280864 тоже имеет право на существование причем 8 перед ним в результирующей строке добавлять не стоит, хотя если это упростит вам задачу то можно.
Если Вы нуб то о себе я вообще молчу!

Автор - Poltava
Дата добавления - 10.02.2013 в 00:14
ikki Дата: Воскресенье, 10.02.2013, 00:37 | Сообщение № 244
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
вариант (не уверен. что оптимальный)
[vba]
Код
Function pt$(r)
     Dim re As Object, x As Object, s$, i%
     Set re = CreateObject("vbscript.regexp")
     Set rm = CreateObject("vbscript.regexp")
     With re
         .Global = True
         .MultiLine = True
         .Pattern = "(^|\D)(\d{1}(?:[-\\\(\s]{0,2})\d{3}(?:[-\\\)\s]{0,2})\d{3}(?:[-\s]?)\d{2}(?:[-\s]?)\d{2})(?=\D|$)"
     End With
     With rm
         .Global = True
         .MultiLine = False
         .Pattern = "[-\\\(\)\s]"
     End With
     Set x = re.Execute(r)
     If x.Count Then
         For i = 0 To x.Count - 1
             s = s & ";" & rm.Replace(x.Item(i).submatches(1), "")
         Next
         pt = Mid(s, 2)
     End If
End Function
[/vba]

коллекции прикрутите сами?


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 10.02.2013, 00:54
 
Ответить
Сообщениевариант (не уверен. что оптимальный)
[vba]
Код
Function pt$(r)
     Dim re As Object, x As Object, s$, i%
     Set re = CreateObject("vbscript.regexp")
     Set rm = CreateObject("vbscript.regexp")
     With re
         .Global = True
         .MultiLine = True
         .Pattern = "(^|\D)(\d{1}(?:[-\\\(\s]{0,2})\d{3}(?:[-\\\)\s]{0,2})\d{3}(?:[-\s]?)\d{2}(?:[-\s]?)\d{2})(?=\D|$)"
     End With
     With rm
         .Global = True
         .MultiLine = False
         .Pattern = "[-\\\(\)\s]"
     End With
     Set x = re.Execute(r)
     If x.Count Then
         For i = 0 To x.Count - 1
             s = s & ";" & rm.Replace(x.Item(i).submatches(1), "")
         Next
         pt = Mid(s, 2)
     End If
End Function
[/vba]

коллекции прикрутите сами?

Автор - ikki
Дата добавления - 10.02.2013 в 00:37
Poltava Дата: Воскресенье, 10.02.2013, 00:44 | Сообщение № 245
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Спасибо уже и за это! да колексии сам прикручу. +Вам, сам наверно до пасхи разбирался бы!


Сообщение отредактировал Poltava - Воскресенье, 10.02.2013, 00:47
 
Ответить
СообщениеСпасибо уже и за это! да колексии сам прикручу. +Вам, сам наверно до пасхи разбирался бы!

Автор - Poltava
Дата добавления - 10.02.2013 в 00:44
ikki Дата: Воскресенье, 10.02.2013, 00:48 | Сообщение № 246
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
я пару раз редактировал свой пост, меняя шаблон.
убедитесь, пожалуйста, что скопировали последний вариант - тот, что сейчас.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениея пару раз редактировал свой пост, меняя шаблон.
убедитесь, пожалуйста, что скопировали последний вариант - тот, что сейчас.

Автор - ikki
Дата добавления - 10.02.2013 в 00:48
ikki Дата: Воскресенье, 10.02.2013, 01:46 | Сообщение № 247
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
странно...
что-то я немного запутался с (?=...) в начале шаблона.
не работало - и всё тут.
к сожалению, тестировал я неправильно - "убивая" варианты.

в принципе, более правильно так:
[vba]
Код
.Pattern = "(?=\D|^)?(\d?(?:[-\\\(\s]{0,2})\d{3}(?:[-\\\)\s]{0,2})\d{3}(?:[-\s]?)\d{2}(?:[-\s]?)\d{2})(?=\D|$)"
[/vba]
работает.
конечно, при таком шаблоне можно обойтись без submatches:
[vba]
Код
s = s & ";" & vbLf & rm.Replace(x.Item(i), "")
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Воскресенье, 10.02.2013, 01:48
 
Ответить
Сообщениестранно...
что-то я немного запутался с (?=...) в начале шаблона.
не работало - и всё тут.
к сожалению, тестировал я неправильно - "убивая" варианты.

в принципе, более правильно так:
[vba]
Код
.Pattern = "(?=\D|^)?(\d?(?:[-\\\(\s]{0,2})\d{3}(?:[-\\\)\s]{0,2})\d{3}(?:[-\s]?)\d{2}(?:[-\s]?)\d{2})(?=\D|$)"
[/vba]
работает.
конечно, при таком шаблоне можно обойтись без submatches:
[vba]
Код
s = s & ";" & vbLf & rm.Replace(x.Item(i), "")
[/vba]

Автор - ikki
Дата добавления - 10.02.2013 в 01:46
ikki Дата: Воскресенье, 10.02.2013, 02:23 | Сообщение № 248
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
кстати, есть "родственная" тема. от того же самого горячо любимого разработчика.
http://msdn.microsoft.com/en-us/library/bs2twtah.aspx

вот в этой теме есть примеры и для проверок типа (?<=...) или (?<!...), и ещё кое-какие плюшки.
но то ли ночь на дворе, то ли лыжи надо менять - не разобрался я, можно ли это дело прикрутить к Excel.

пс. аналогичную тему создал на киберфоруме, но, надеюсь, в данном случае это не повредит никому. wink


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki
 
Ответить
Сообщениекстати, есть "родственная" тема. от того же самого горячо любимого разработчика.
http://msdn.microsoft.com/en-us/library/bs2twtah.aspx

вот в этой теме есть примеры и для проверок типа (?<=...) или (?<!...), и ещё кое-какие плюшки.
но то ли ночь на дворе, то ли лыжи надо менять - не разобрался я, можно ли это дело прикрутить к Excel.

пс. аналогичную тему создал на киберфоруме, но, надеюсь, в данном случае это не повредит никому. wink

Автор - ikki
Дата добавления - 10.02.2013 в 02:23
Poltava Дата: Суббота, 16.02.2013, 21:40 | Сообщение № 249
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Вот еще такой вопрос. Сколько совпадений я могу вытащить? То есть я использую конструкцию .Execute() посмотрев в окно переменных я вижу что каутн более 22000 но в результатах толькот 256 значений! это ограничение можно как то обойти! Ну естественно кроме как очевидным вариантом разбив строку на подстроки и перебрав их в цикле
К сообщению приложен файл: 0907811.jpg (34.1 Kb)


Сообщение отредактировал Poltava - Суббота, 16.02.2013, 21:40
 
Ответить
СообщениеВот еще такой вопрос. Сколько совпадений я могу вытащить? То есть я использую конструкцию .Execute() посмотрев в окно переменных я вижу что каутн более 22000 но в результатах толькот 256 значений! это ограничение можно как то обойти! Ну естественно кроме как очевидным вариантом разбив строку на подстроки и перебрав их в цикле

Автор - Poltava
Дата добавления - 16.02.2013 в 21:40
Alex_ST Дата: Суббота, 16.02.2013, 21:47 | Сообщение № 250
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Poltava,
это, скорее всего, просто ограничение возможности визуализации в окне Locals.
Реально совпадающих подстрок должно быть столько, сколько указано в .Count
А кто мешает попробовать? Закиньте их все циклом в массив/коллекцию/словарь (кому что больше нравится) и попробуйте считывать оттуда элементы с номерами больше 255. Наверняка получится.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеPoltava,
это, скорее всего, просто ограничение возможности визуализации в окне Locals.
Реально совпадающих подстрок должно быть столько, сколько указано в .Count
А кто мешает попробовать? Закиньте их все циклом в массив/коллекцию/словарь (кому что больше нравится) и попробуйте считывать оттуда элементы с номерами больше 255. Наверняка получится.

Автор - Alex_ST
Дата добавления - 16.02.2013 в 21:47
Poltava Дата: Воскресенье, 17.02.2013, 13:15 | Сообщение № 251
Группа: Друзья
Ранг: Форумчанин
Сообщений: 232
Репутация: 50 ±
Замечаний: 0% ±

Да Вы как обычно правы! а я даже не подумал о существовании такого ограничения! Спасибо за помощь
 
Ответить
СообщениеДа Вы как обычно правы! а я даже не подумал о существовании такого ограничения! Спасибо за помощь

Автор - Poltava
Дата добавления - 17.02.2013 в 13:15
хельпо Дата: Среда, 06.03.2013, 12:00 | Сообщение № 252
Группа: Гости
 
Ответить
Сообщение

Автор - хельпо
Дата добавления - 06.03.2013 в 12:00
nerv Дата: Среда, 06.03.2013, 13:46 | Сообщение № 253
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±



Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение

Автор - nerv
Дата добавления - 06.03.2013 в 13:46
спасибо. Дата: Среда, 06.03.2013, 14:08 | Сообщение № 254
Группа: Гости
 
Ответить
Сообщение

Автор - спасибо.
Дата добавления - 06.03.2013 в 14:08
nerv Дата: Четверг, 07.03.2013, 01:25 | Сообщение № 255
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±



Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение

Автор - nerv
Дата добавления - 07.03.2013 в 01:25
спасибо. Дата: Четверг, 07.03.2013, 20:14 | Сообщение № 256
Группа: Гости
 
Ответить
Сообщение

Автор - спасибо.
Дата добавления - 07.03.2013 в 20:14
RAN Дата: Четверг, 07.03.2013, 20:26 | Сообщение № 257
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение

Автор - RAN
Дата добавления - 07.03.2013 в 20:26
nerv Дата: Воскресенье, 10.03.2013, 01:05 | Сообщение № 258
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Можно взять внешнюю библиотеку/скрипт для разбора JSON'а. Не представляю, как это сделать с помощью VBA, т.к. он не умеет ходить (цикл) по объектам (т.е. возвращать их ключи и значения). А вот результат разбора уже можно вернуть в VBA или в эксель на лист.

Цитата (спасибо.)
но заставить работать его с возвратами которые выдает jira не удается т.к. запрос имеет многоэтажную конструкцию.
например

не важно, сколько этажей. Главное, чтобы JSON был валиден.

Если очень нужно, пишите в личку или на почту. Помогу за умеренное вознаграждение.


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
СообщениеМожно взять внешнюю библиотеку/скрипт для разбора JSON'а. Не представляю, как это сделать с помощью VBA, т.к. он не умеет ходить (цикл) по объектам (т.е. возвращать их ключи и значения). А вот результат разбора уже можно вернуть в VBA или в эксель на лист.

Цитата (спасибо.)
но заставить работать его с возвратами которые выдает jira не удается т.к. запрос имеет многоэтажную конструкцию.
например

не важно, сколько этажей. Главное, чтобы JSON был валиден.

Если очень нужно, пишите в личку или на почту. Помогу за умеренное вознаграждение.

Автор - nerv
Дата добавления - 10.03.2013 в 01:05
Alex_ST Дата: Воскресенье, 10.03.2013, 18:22 | Сообщение № 259
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Александр, ну сколько можно оффтопать?
Мы все, конечно, очень рады за тебя, что ты изучил js и знаешь, что такое JSON
Но топик "Поговорим про RegExp?" - не место для их обсуждения.
Хочешь об этом поговорить? Тогда создай соответствующий топик.
А здесь все эти разговоры - ОФФТОП.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеАлександр, ну сколько можно оффтопать?
Мы все, конечно, очень рады за тебя, что ты изучил js и знаешь, что такое JSON
Но топик "Поговорим про RegExp?" - не место для их обсуждения.
Хочешь об этом поговорить? Тогда создай соответствующий топик.
А здесь все эти разговоры - ОФФТОП.

Автор - Alex_ST
Дата добавления - 10.03.2013 в 18:22
nerv Дата: Воскресенье, 10.03.2013, 19:36 | Сообщение № 260
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Цитата (Alex_ST)
А здесь все эти разговоры - ОФФТОП.

я в курсе

Цитата (Alex_ST)
Александр, ну сколько можно оффтопать?

если тебе так неприятно мое присутствие, можешь гнать мою карму в ноль или стать модератором и забанить, или пожаловаться администрации, или твой вариант


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение
Цитата (Alex_ST)
А здесь все эти разговоры - ОФФТОП.

я в курсе

Цитата (Alex_ST)
Александр, ну сколько можно оффтопать?

если тебе так неприятно мое присутствие, можешь гнать мою карму в ноль или стать модератором и забанить, или пожаловаться администрации, или твой вариант

Автор - nerv
Дата добавления - 10.03.2013 в 19:36
Поиск:

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