Какие другие симптомы имеются? Любую латиницу не ищет? Символы? А если не в GREP?
У меня ощущение, что это вопрос не для темы про GREP.
yann777
Dec 11 2008, 19:10
Текст и глиф ищет любые. GREP только русские и метасимволы.
andrej
Dec 18 2008, 17:39
помогите сирому и убогому(
в ГРЕП-вкладке такая конструкция работает
find what
(?<=\>) ч(?=\>)
change to
ч
+no break
а в FindChangeList
grep {findWhat:"(?<=\>) ч(?=\>)"} {changeTo:" ч", noBreak:true} {includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}
нет...
PAIN.(t)
Dec 18 2008, 17:58
Та же история… табуляторы в качестве разделителей (хотя, может это движок форума их скушал) и двойные слеши…
Рабочая конструкция:
grep<tab>{findWhat:"(?<=\\>) ч(?=\\>)"}<tab>{changeTo:" ч", noBreak:true}<tab>{includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}
PAIN.(t)
Feb 13 2009, 01:03
Довольно часто на просторах сети можно встретить вопросы типа: "можно ли автоматически разбить большие числа на группы по три разряда (знака)?"
Вчера нам с Борисом Кащеевым
(aka putnik) удалось найти решение этой задачи, которое оказалось на редкость простым.
Сводится оно к нескольким
(зависит от ситуации) GREP-конструкциям.
1. Основная заменаFind what: (?<!\.|,)\<(\d{1,})(\d{3})\>
Change to: $1~4$2
Эта процедура выполняется несколько раз, до тех пор, пока число сделанных замен не станет равным нулю (т.е. будут обработаны все присутствующие в материале числа).
2. Дополнительная заменаТестируя GREP-запрос, Борис заметил, что если поиск ведется в выделенном фрагменте (Search = Selection), и число находится в начале выделения; то такое число обработано не будет. В случае с Search = Story или Search = Document данный баг отсутствует. Фиксится этот баг дополнительной заменой:
Find what: ^(\d{1,})(\d{3})\>
Change to: $1~4$2
Аналогично предыдущему, этот запрос выполняется несколько раз.
3. Дополнительная замена-2Также по условиям задачи, поставленной Борисом, не должны разбиваться четырехзначные числа
(диапазон 1000-9999).
Find what: \<(\d{1})~4(\d{3})\>(?! \d)
Change to: $1$2
Опционально
(зависит от требований вашего литредактора/корректора). Выполняется один раз.
Обратите внимание!!!
— в примерах числа разбиваются четвертькегельной шпацией (~4). Если необходимо использовать другие пробельные элементы – вносите в запрос соответствующие изменения.
— запросы не должны начинаться с пробелов.И, наконец, приятная новость для лентяев

Борис автоматизировал процесс, написав скрипт, выполняющий все замены автоматически, нужное число раз, и с возможностью выбора нужного пробельного элемента.
Скачать его можно
здесь.
PAIN.(t)
Feb 14 2009, 01:17
Апдейт к предыдушему сообщению:
Стараниями Бориса скрипт обновлен, на сайте доступна новая версия.
Немного расширен функционал; исправлен серьезный баг, проскочивший по моей вине – дробная часть числа (после запятой) теперь не разбивается.
Всем, кто скачал старую версию, рекомендую обновиться.
yann777
Mar 2 2009, 17:54
Эксперты, как в FindChangeList прописать поиск какого-либо начертания шрифта (болд или италик или андерлайн)?
PAIN.(t)
Mar 3 2009, 15:24
На примере GREP-а:
С начертаниями все просто и понятно.
Код
grep {findWhat:".", fontStyle:"Bold"}
grep {findWhat:".", fontStyle:"Italic"}
grep {findWhat:".", fontStyle:"Bold Italic"}
Немного другая история с underline и strikethrough – они по природе своей являются не начертаниями гарнитуры, а приемами выделения. Соответственно, и ищутся в другом месте

Код
grep {findWhat:".", underline:true}
grep {findWhat:".", strikeThru:true}
Пытаюсь создать поиск, который находил бы марки самолётов и делал дефис в них неразрывным. И натыкаюсь на одну странность. Похоже на ошибку в GREP.
Код
Найти: (?<=(?-i)Ту|Ил|МиГ)-
Заменить на: ~~
Т.е. ищется дефис при условии, что перед ним стоит "Ту" или "Ил" или "МиГ" (на всякий случай включил поиск с учётом регистра). И дефис меняется на неразрывный. Всё просто. Но GREP спотыкается на "МиГ"!
Я пробовал разные варианты, включал-выключал учёт регистра, менял порядок слов, ставил ограничение на поиск только в начале слова, даже заменял дефис на "любой знак" (.) — либо поиск вообще не даёт результата, либо вместо дефиса находится буква "Г" в слове "МиГ". Такое ощущение, что GREP не понимает, как это прописная буква может быть не в начале слова, а в конце.
Есть предложения, как выкрутиться?
Пока я не придумал ничего лучше как зайти с другой стороны и искать... дефис с последующей цифрой

Код
Найти: -(?=\d)
Заменить на: ~~
По идее, это должно подойти для всех случаев.
Вообще рекомендую его к широкому повсеместному применению. Или подскажите какое-нибудь исключение, когда такая замена может быть вредной.
Но вопрос остаётся открытым, хотя бы из теоритического интереса: как искать сочетания типа "МиГ" в lookbehind (lookahead вроде работает)?
Версия ID CS3.
А если искать Ми + любая буква?
PAIN.(t)
Mar 16 2009, 12:08
Я еще в самом первом посте писал, что больно уж все смахивает на то, что с lookbehind Адоба что-то хорошенько нахомутала…
Насчет прописной буквы в конце – неверно. Я отключал чувствительность к реестру, менял ее на строчную – результат тот же.
Как выкрутиться: откажись от lookbehind-а.
Код
Find What: (Ту|Ил|МиГ)(-)
Change To: $1~~
Да, Юра, действительно, в данном случае можно и так, спасибо.
Кстати, с тем же lookbehind я снова наткнулся на проблему, когда составил поиск замены дефиса на тире в выражениях "поверхность-воздух", "воздух-воздух", "поверхность-поверхность". В параметрах lookbehind и lookahead задавал "поверхность|воздух" (без кавычек, конечно) — и это не работало. Ищет только по первому слову вроде. Да, с твоей подсказки вижу, что можно выкрутиться через поиск трёх групп,
Код
(поверхность|воздух)(-)(поверхность|воздух)
но всё равно обидно — Адобы налажали. Надеюсь, в CS4 поправили. Проверить не могу.
PAIN.(t)
Mar 16 2009, 20:28
Нет, в CS4 все точно так же. Я как раз в четвертом и смотрел…
Вечерком буду посвободнее – забью погоняю эти выражения RegexBuddy и PowerGREP-ом.
Посмотрим, что там нам скажут… Тогда уже будет яснее, кто косячит.
PS. и находочку свою, запости сюда, пожалуйста… раз уж сам Борис молчит
SsoulmanN
Mar 18 2009, 12:06
Подскажите, плиз, где найти Полный перечень метасимволов GREP и примеры составление (ссылки в данном посте, указаные ранее \100кБ\ - не работают, а по запросам в Яндексе, чет ничего путного нету(((
Toyava
Mar 18 2009, 12:45
Скажите, а таблица на четыре страницы в мануале вам не попадалась на глаза?
А сам мануал имеет привычку попадаться здесь:
http://help.adobe.com/ru_RU/InDesign/6.0/i...gn_cs4_help.pdf
Цитата(PAIN.(t) @ Mar 16 2009, 20:28)

PS. и находочку свою, запости сюда, пожалуйста… раз уж сам Борис молчит 
Ну, находка не моя, я только объяву дал ))
Для тех, у кого возникают сложности при переносе индизайновских GREP-запросов в набор FindChangeByList.jsx, есть скрипт, который сделает это за вас — RecordFindChange_CS3.jsx. Подробности у наших добрых
соседей.
putnik
Mar 24 2009, 02:20
Кто использовал модифицированный скрипт FindChangeByLists, который в одном файле FindChangeList.txt позволял организовать несколько списков поиска-замены, пожалуйста обновитесь
здесь. Работает как в CS3, так и в CS4.
Изменения: а) моя обвязка перенесена на программный код FindChangeByList, который в составе ID CS4; б) Исправлены мелкие логические ошибки; в) удобный выбор нужного файла поиска/замены, если их у вас несколько.
Пожалуйста, сообщайте о найденных ошибках (если таковые появятся) на почтовый ящик, который указан в теле скрипта.
PAIN.(t)
Mar 24 2009, 02:27
Борис, спасибо!
Надеюсь чаще видеть вас в этом топике: как с вашими наработками, так и с проблемами – в меру возможностей постараемся помочь с их решением.
yann777
Mar 24 2009, 20:05
Цитата(yann777 @ Dec 11 2008, 16:46)

GREP не ищет английские буквы. Чё делать? Как быть? Где копать?
ВНИМАНИЕ!
Нашёл в чём проблема. Я пользуюсь скриптом
FindChange_Multilist.exe (автор Юрий Васильев). Всё отлично. Но... После применения скрипта GREP отказывается искать англицкие буковки.

Помогает перезагрузка Индизайна. Возможно автор скрипт и доработает.
PAIN.(t)
Mar 24 2009, 20:13
yann777
Спасибо за сигнал. Постараюсь выявить и исправить баг в коде.
PAIN.(t)
Mar 26 2009, 20:00
yann777 & allСкрипт поправил, отправил Борису – при первой же возможности исправленная версия скрипта будет выложена на
сайте.
Пока можно забрать ее
отсюда.
Теперь пару слов в защиту себя-любимого

Баг не мой, "достался в наследство" от штатного Адобовского FindChangeByList.vbs для CS3
(впрочем, и за FindChangeByList.jsx такой же грешок замечен) – напомню, что движок скрипта я не изменял, а всего-то навсего прикрутил к нему интермордочку. Проверил штатные скрипты на машине, к которой мои очумелые ручки никогда не прикасались – симптоматика та же.
Провоцируют такое неподобство со стороны ИнДеза встречающиеся в коде строки типа:
Код
myInDesign.FindChangeTextOptions = idNothingEnum.idNothing
Независимо от того, где такая строка встречается в коде, и производятся ли в дальнейшем какие-либо обращения к классам
Код
myInDesign.FindChange(Text/Grep/Glyph)Options…
возможность поиска в тексте латинских символов
(а может, и не только их) посредством GREP-а после выполнения такого скрипта отрубается напрочь
(до перезагрузки приложения).
"Проблемные" строки были убраны из кода, а сам код скрипта немножко изменился: теперь в начале выполнения он запоминает параметры поиска
(как то: поиск на мастер-страницах, в сносках и т.д.), а перед выходом – восстанавливает исходные.
Однако, в связи с тем, что теперь не выполняется "обнуление" этих параметров перед выполнением каждого запроса из вашего листинга, я рекомендую
в запросах прописывать их все явно.
Ну, вроде бы, на сегодня все…
putnik
Mar 26 2009, 20:21
Цитата(PAIN.(t) @ Mar 26 2009, 20:00)

yann777 & all
Скрипт поправил, отправил Борису –
Уже выложил на
сайт
PAIN.(t)
Mar 26 2009, 20:56
putnikБорис, спасибо!
arhipЦитата
погоняю эти выражения RegexBuddy
Дык, вот… Добрался я наконец-то до сабжа…

Как видно на скриншоте – выражение составлено абсолютно верно
(Ту и МиГ-и просто не уместились на скриншоте).
То, что оно и ему подобные не работают в ИнДезе – заслуга Адобовских программеров
(корявая реализация lookbehind-а).
UPD: заменил скриншот на более удачный.
andrej
Mar 26 2009, 22:44
ну... у меня цс3 перестаёт искать латинские символы
после банальных скриптов со строкой
app.scriptPreferences.version = 4;
после этого - каюк... grep перестаёт напрочь работать
PAIN.(t)
Mar 26 2009, 22:53
Можно пример заведомо "сбойного" скрипта?
andrej
Mar 26 2009, 23:18
да запросто) кусок кода в начале...
app.scriptPreferences.version = 4;
with (app) {
myStory = selection[0].parentStory;
// Заменяем жирное форматирование символов на символьный стиль "Bold"
findPreferences = null;
changePreferences = null;
findPreferences.fontStyle = "Bold";
changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("Bold");
myStory.search("^?", false, false, "");
findPreferences = null;
changePreferences = null;
}
после этого - в цс3 перестаёт работать grep
PAIN.(t)
Mar 26 2009, 23:38
Угу, зафиксировал такую багу…
Ну с этим куском кода все решилось довольно просто – я пошел от обратного, и тупо прописал в конце
Код
app.scriptPreferences.version = 5;
т.е. после выполнения скрипта в эмуле более старой ОМ, вернул "родную" объектную модель.
После этого глюк пропал…
Прокатит ли такой фокус с другими скриптами – пробуйте.
Цитата(PAIN.(t) @ Mar 26 2009, 20:56)

arhip
Добрался я наконец-то до сабжа…
Спасибо, Юр, буду иметь в виду.
yann777
Mar 27 2009, 14:45
PAIN.(t)
Спасибо!
Цитата(arhip @ Mar 16 2009, 03:05)

Пытаюсь создать поиск, который находил бы марки самолётов и делал дефис в них неразрывным. И натыкаюсь на одну странность. Похоже на ошибку в GREP.
Код
Найти: (?<=(?-i)Ту|Ил|МиГ)-
Заменить на: ~~
Я нашёл, как обойти эту проблему. Индизайн, как оказывается, спотыкается на
количестве букв в lookbihind! Если составить несколько запросов, где варианты разобрать по кол-ву букв, то всё работает.
Например, так:
Код
Найти: (?<=(?-i)Ту|Ил|По|Як|Ла)-
Заменить на: ~~
Найти: (?<=(?-i)МиГ|ЗИЛ|ГАЗ|ВАЗ)-
Заменить на: ~~
yann777
Apr 2 2009, 19:46
В запросах группировать по кол-ву букв? По две, по три и так далеее? Считаю - очень важная находка!
Именно так, группировать. И это была не первоапрельская шутка )) Впрочем, легко проверяется.
Любимцев
Jun 12 2009, 08:46
А о GREP-стилях, замолвите слово?
Я покумекал, и не вижу пока что он дает... Да можно назначить No Break пробелам после а, с, в... но сами-то пробелы он не добавит. "г.Москва" в "г. Москва" не превратится
Как бы можно, на лету, локальному форматированию присвоить стили символов (и прописать это сразу в дефолтный стиль Абзаца) но, как искать италик, болд, GREP-стилем?
А Find Format на что? Или я вопроса не понял.
Кстати, этот запрос превратит "г.Москва" в "г. Москва" с неразрывным пробелом:
Код
Найти: (?<=\<г)\.(?=[A-Я])
Заменить на: .~S
Перевожу на человеческий: найти точку, перед которой стоит буква "г", являющаяся началом слова, а после точки — любая кириллическая прописная. Заменить точку на точку + неразрывный пробел.
Любимцев
Jun 12 2009, 15:48
Не, Алексей, не понял. Я толкую о GREP-стилях, кои в абзацных стилях тусуются
Не знаю, что это. Фишка из CS4? Я на него ещё не переполз.
Любимцев
Jun 12 2009, 19:40
Ну да, о CS4
PAIN.(t)
Jun 13 2009, 02:41
Цитата
Я покумекал, и не вижу пока что он дает...
Так ты сам все правильно сказал: ищет в текстовом массиве последовательности по определенной GREP-маске, и присваивает им символьный стиль.
Этакий продвинутый Nested Style, где вложенный фрагмент может находиться в произвольном месте абзаца…
Или эквивалент такой мульки:
Код
Find: что-то-там
Change To: $0 + форматирование Character Style-ом
Не более того.
Цитата
"г.Москва" в "г. Москва" не превратится
Нет, не превратится. Здесь нужен тот GREP, который в Find-Change сидит.
Цитата
как искать италик, болд, GREP-стилем
Никак. До этого Адоба еще не дошла…
GREP, сам по себе, вообще этого не умеет. Он всего-навсего инструмент поиска по маске, всяческие дополнительные атрибуты текста – ну никак не GREP-ова парафия…
GREP Styles хороши для подобных вещей (слева – исходник, справа – отформатировано в один клик):
Любимцев
Jun 13 2009, 04:19
Ок! Юр, Спасибо!
Просто эта тема не была тут, еще, затронута. Может кто продолжит.
Любимцев
Jul 18 2009, 21:06
Продолжая тему.
В GREP-стиле указано — "Все латинские", а во вложенном — "первое предложение"
GREP сбивает вложенный (то есть нужно как-то указать исключене — "кроме первого предложения")

Забегая вперед: следующие за латиницей цифры, так же должны быть Италиком. А вот следующие за ними русские в скобках, (перевод), но не цифры, должны быть удалены (возможно выделены цветом).
Tom_York
Jul 24 2009, 08:48
Люди помогите решить проблему
Есть куча таблиц
Нажмите для просмотра прикрепленного файла Так вот не могу разобраться что написать между двумя выражениями
(Қазақстан Республикасы) ******* (Республика Казахстан)
Что цифры сделать болдом?
Найти: (?<=Қазақстан Республикасы).*(?=Республика Казахстан)
Заменить: [Строка замены пустая. Включить свойство Bold в Change Format: Basic Character Format: Font Style]
?<= — "этот текст должен быть перед искомым, или positive lookbehind".
?= — этот текст должен быть после искомого, или positive lookhead".
. (точка) — любой символ.
+ — повтор предыдущего символа один или более раз.
Я надеюсь, это не реальная таблица, а набрано через табуляцию?
Tom_York
Jul 24 2009, 13:08
arhip вот именно реальная таблица
их сотни, большой объем страниц каждый месяц. И везде таблицы
Тогда я не знаю. Может быть, в CS4 grep работает с таблицами... Логичнее попробовать через стили таблиц.
Tom_York
Jul 24 2009, 13:51
Через стили не получается, так как все время разные шапки, и в некоторых таблицах, жирность не ставится.
В основном где общая статистика по кз.
vbatushev
Jul 25 2009, 06:41
А если тупо?
Искать:
(^\d+,\d+$)|(^~e$)|(^\.{3}$)
Заменить:
на стиль или болд
У тебя же просто нужно найти определенные наборы буквоцифр?
P.S. Ой, нет. Нужно ведь только первую строку. IMHO, только минискрипт рисовать.
Tom_York
Jul 27 2009, 06:45
Там даже не просто первую,
а именно где Казахстан, то есть в некоторых первая сторока не выделяется.
yann777
Jul 28 2009, 16:56
Цитата
Есть куча таблиц
Таблиц много? Или одна большая таблица? Может таблицу преобразовать в текст. Сделать нужные выделения (какая интересная фраза получилась). Потом обратно текст в таблицу.
Tom_York
Jul 29 2009, 08:26
Много в прямом смысле этого слова.
есть же еще шапки таблиц, которые состоят не из 1 строки.
в выложеном примере таблица без шапки
yann777
Jul 29 2009, 09:34
Как вариант - соединить таблицы
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.