|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.07.2015, 15:11 | #1 |
Регистрация: 21.07.2015
Сообщений: 7
|
VBScript.RegExp: замена в несколько проходов
Добрый день.
Есть код objRegExp.Global = True objRegExp.Pattern = "^([\.\d ]*)(.+)\r([\.\d ]*)\2\r" Res = objRegExp.Replace(Str, "$1$3$2" + vbCrLf) Как сделать так, чтобы поиск-замена производились до тех пор, пока количество замен не станет равной нулю? Я решил попробовать так objRegExp.Global = True For i = 1 To 5 objRegExp.Pattern = "^([\.\d ]*)(.+)\r([\.\d ]*)\2\r" Res = objRegExp.Replace(Str, "$1$3$2" + vbCrLf) Next но не получилось. |
21.07.2015, 18:49 | #2 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
А обычной заменой в Word?
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
21.07.2015, 20:42 | #3 |
Регистрация: 21.07.2015
Сообщений: 7
|
|
23.07.2015, 18:55 | #4 | |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Цитата:
В простейшем случае так Код:
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
|
23.07.2015, 20:51 | #5 |
Регистрация: 21.07.2015
Сообщений: 7
|
|
26.07.2015, 20:30 | #6 |
Регистрация: 21.07.2015
Сообщений: 7
|
Не получается, увы (
|
26.07.2015, 20:32 | #7 |
Регистрация: 21.07.2015
Сообщений: 7
|
В общем, кода такой пока что.
Sub Regularka() 'Объявляем переменные и классы Set objRegExp = CreateObject("VBScript.RegExp") Dim Str, Result As String 'Копируем выделенный текст в строковую переменную и удаляем из текста. Str = Selection.text Selection.Delete 'Проверять по всему тексту (если бы False, то было бы до первого соответствия). objRegExp.Global = True 'Регулярное выражение, ищущее строку (время + название передачи) objRegExp.Pattern = "^([\.\d ]*)(.+)\r([\.\d ]*)\2\r" For i = 1 To 5 Result = objRegExp.Replace(Str, "$1$3$2" + vbCrLf) Str = Result Next Selection.TypeText text:=Str End Sub ============== А текст в документе ворда такой (просто пример): 17.23 Новости 12.22 Новости 22.00 Новости 12.12 Новости |
26.07.2015, 21:37 | #8 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
Выложите документ с реальными данными (расширенный режим - скрепка), и что надо получить. Похоже, тут лучше использовать коллекцию или словарь, а не регэксп.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
27.07.2015, 11:22 | #9 | |
Регистрация: 21.07.2015
Сообщений: 7
|
Цитата:
И текст в будущем будет такой же ("Новости" и т.п.) Там еще непонятность есть -- если например первая строчка будет немного другая, то макрос вообще ничего не заменяет: 17.23 Новоооости 12.22 Новости 22.00 Новости 12.12 Новости Хотя регулярное выражение должно находить в этом случае вторую и третью строки. |
|
27.07.2015, 11:22 | #10 |
Регистрация: 21.07.2015
Сообщений: 7
|
Что такое коллекция? )
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Замена TXT1 на TXT2 в Selection при условии, что их (TXT2) там м.б. несколько | DBEER | Microsoft Office Word | 9 | 03.02.2015 15:37 |
Regexp | Fahman | Общие вопросы Delphi | 27 | 22.06.2014 18:06 |
Использование "VBScript.RegExp" | Vadim39 | Microsoft Office Word | 15 | 30.05.2013 08:38 |
TRegExpr: замена несколько раз в строке разными значениями, как? | trafbite | Общие вопросы Delphi | 5 | 22.06.2012 21:33 |
regexp в С++ | Пепел Феникса | Общие вопросы C/C++ | 2 | 10.11.2010 18:26 |