[ID CC-CC2022] Почему не захватывается часть текста ГРЕПом?

  • Автор темы Автор темы hulk1776
  • Дата начала Дата начала

hulk1776

Топикстартер
15 лет на форуме
Сообщения
738
Реакции
21
Обрабатываю сноски для статьи "вручную". Ставлю метку (Endnotes), потом ее ищу и от нее и до конца все перетаскиваю в фреймы для сносок (автосноски не годятся, так как иногда согласовать сноску с текстом вообще нельзя, напр., на последней строке фрейма может сидеть 3 многосторочных сноски). Поэтому руками.
Так вот грепом ищу Endnotes и хватаю все, что дальше.
Но оказывается, что часть текста не захватывается (хотя при ручном поиске по грепу по формуле
myInd.FindGrepPreferences.FindWhat = "\(Endnotes\)(.|~F|\r|\n)+"
все выделяется до самого конца материала.
Посмотрел через окошко дебаггера - хвост пропадает (см. скриншот. Должно быть 35 сносок, а обрыв происходит на 32й сноске в случайном(?) месте).
До это определял искомый текст по устаревшей конструкции
Код:
Set mText = mStory.Texts.ItemByRange(mPara1, mPara3)
Set mPara1 = mFound(1).Paragraphs(1)
Set mPara2 = mStory.Paragraphs(mStory.Paragraphs.Count)
Set mText = mStory.Texts.ItemByRange(mPara1, mPara3)
Думал, в этом дело. Оказалось, что и грепом тот же результат - текст недовыделяется. Но не пропадает, а остается после move. Приходится руками остатки перетаскивать в последний сносочный фрейм. В чем может быть причина "недосмотра"?
 

Вложения

  • Clipboard02.jpg
    Clipboard02.jpg
    128.7 КБ · Просм.: 352
Похоже на бейсик.
В нем бэкслеши не нужно экранировать? В js, например, все конструкции типа \r\n, которые планируется использовать в грепе, нужно экранировать \\r\\n
 
В бейске вообще нет грепа, как он общается со встроенным в индизайн грепом - отдельная тема для небольшого исследования :(
 
Если постоянно обрывается в одном месте, можно поискать там какой-нибудь непечатный символ. Или печатный, но нестандартный. Для эксперимента можно попробовать убрать это место из текста.

В бейске вообще нет грепа, как он общается со встроенным в индизайн грепом -
В VBA есть свои регулярные выражения, хотя с меньшими возможностями, чем греп в ID.
Общение с грепом происходит банальной передачей строки, а она просто передаётся как есть.
 
  • Спасибо
Реакции: Skvoznyak
Мы действительно про VBA сейчас речь ведем?
 
Похоже на бейсик.
В нем бэкслеши не нужно экранировать? В js, например, все конструкции типа \r\n, которые планируется использовать в грепе, нужно экранировать \\r\\n
Сейчас проверил - экранировать не надо. При экранировании происходит остановка с ошибкой.
 
Если постоянно обрывается в одном месте, можно поискать там какой-нибудь непечатный символ. Или печатный, но нестандартный. Для эксперимента можно попробовать убрать это место из текста.
Удалил 3 последние сноски вместе с текстом. Запустил. теперь пропали новые три последние сноски. ИНогда не пропадают. Может зависит от числа сносок (каким-то хитрым образом)? Попробую попроверять.
 
Посмотрел через выделение (программно). Действительно, выделение не доходит до конца статьи. Может как-то можно заставить программку "выделить до конца" как-то еще более более принудительно?
 
По этой логике из любой среды можно управлять индизайном - хоть из питона какого ;)
Из MS Office можно. При установке пакета Adobe в офис инсталлируются VBA-библиотеки, относящиеся к Инди/Фотошопу/Акробату/Иллу и пр. Вообще там (Word-Alt_F11-Tools-Preferences) довольно много чего сидит. Теоретически, это богатство можно как-то использовать)))
 

Вложения

  • Clipboard01.jpg
    Clipboard01.jpg
    35.6 КБ · Просм.: 298
Ответ на вопрос оказался банальным. Надо было просто переопределить переменную mStory, по которой производился греп-поиск. Потому что в ней ДО ТОГО были произведены различные чистки, и содержимое mStory видоизменилось с момента первоначального определения. После определения mStory снова проблема решилась))
 
Последнее редактирование:
Продолжение темы...
По выражению
"\(Endnotes\)(.|~F|\r|\n)+"
находится не все (см. клип1)
Если не снимая выделения добавляю в строку знак доллара
"\(Endnotes\)(.|~F|\r|\n)+$"
находится все до конца.
Если снять выделение и повторить поиск с этим выражением
"\(Endnotes\)(.|~F|\r|\n)+$"
не находится ничего.
Это глюк или ошибка в понимании?
 

Вложения

  • Clipboard01.jpg
    Clipboard01.jpg
    236.6 КБ · Просм.: 247
  • Clipboard02.jpg
    Clipboard02.jpg
    127.6 КБ · Просм.: 239