Страница: 1 |
Страница: 1 |
Вопрос: Регулярные выражения в Word
Добавлено: 05.10.07 20:54
Автор вопроса: ferico | Web-сайт:
Кто-нибудь знает, как организовать в Word поиск с регулярными выражениями (как в Perl)?
Некотируемые варианты:
1) Опция поиска Wildcards - не рассматривается (слишком слаба).
2) Подключение модуля Microsoft VBScripts Regular Expressions 5.5 не подходит, т.к. здесь производится хоть и мощный, но поиск в текстовой строке. А нужно в Range DOC-документа, т.е. с сохранением форматирования.
В конечном счете вопрос сводится к вопросу - как с помощью VBScripts Regular Expressions 5.5 или др.средств сделать поиск внутри документа (а не строки)?
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #1
Добавлено: 06.10.07 13:24
Ну что, видимо Word не дает возможности заменять текст?
Или никто не знает?
Номер ответа: 2
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #2
Добавлено: 06.10.07 13:29
Думается, есть, конечно, хитрый способ - брать часть форматированного текста из документа, переводить в строку, делать Regexp-поиск, затем в самом тексте обычным способом находить найденные фрагменты и работать уже с ними.
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 06.10.07 16:12
Стандартная вёрдовская замена помойму допускает рег. выражения. Я правда незнаю насколько они мощные. Ну собственно осталось разобраться как пользоваться рег. выражениями в стандартной замене текста, и записать макрос...
Номер ответа: 4
Автор ответа:
ferico
Вопросов: 2
Ответов: 31
Web-сайт:
Профиль | | #4
Добавлено: 06.10.07 17:23
В том то и дело, что стандартная Вордовская замена с рег.выражениями очень малофункциональна по сравнению с повсеместно принятыми рег. выражениями.
Например, она не дает вставлять в строке поиска \n. Это приходится делать конкатенацией строк и vbCr.
А также нет оператора количества символов "0 и более". Например, выражение {0;} не работает, работает только {1;}. В Perl это звездочка "*" или {0,}. В Word есть либо @ (от 1 и более символов), либо {0}, либо {1;}. И приходится делать поиск как минимум дважды для двух вариантов. А если строк тысячи?
Более того, рег.выражения в Ворде получаются настолько громоздкими, что вместо одной карсивой строчки RegExp часто приходится делать многоступенчатый поиск в несколько этапов в цикле. Иногда даже со сдвигом области поиска.