[ID CS4-CS6] Заменить точки на запятые - сломал голову

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

vinnik63

Участник
Топикстартер
Сообщения
322
Реакции
99
Который день безуспешно ломаю голову над, казалось бы, не очень сложной задачей.
Есть в телепрограмме строчки такого плана:

М/ф «Ранние пташки». «Заботливые мишки». «Страна добра», «Белка и Стрелка». «Озорная семейка»

То есть - идёт перечень нескольких мультфильмов (число всегда разное, от двух до пяти), разделённых точками (но иногда попадаются запятые, как в примере выше).

Можно ли сделать такой ГРЕП, чтобы менять точки на запятые только в строке с "М/ф", учитывая, что их всё время разное количество?

При фиксированном количестве мультфильмов у меня худо-бедно получается справиться, а вот с переменным количеством ничего не выходит.
Просто заменить (». «) на (», «) тоже не вариант, так как есть места, где именно так и должно быть, поэтому менять нужно только в строке с "М/ф".
 
Создать отдельный абзацный стиль для строк с "М/ф", первым проходом его назначить, а вторым — заменить точки на запятые только в этом стиле.
 
  • Спасибо
Реакции: vinnik63 и Linxy
Если стилевое оформление позволяет, то я бы пошла простым путем и сначала нашла все строки, которые начинаются с «М/ф»:
upload_2017-5-30_12-47-4.png

Потом в этом стиле заменила все точки на запятые:
upload_2017-5-30_12-47-54.png
 
  • Спасибо
Реакции: vinnik63 и Eugenyus
Попробуйте так:
Найти (?<=М\/ф)(.+?)(")(\.\s)(?=".+)
Заменить на $1$2,\S
(в этом выражении \S можно заменить на обычный пробел)

Прогонять до упора :)
 
  • Спасибо
Реакции: RIKITIKI, vinnik63 и Linxy
Попробуйте так:
Найти (?<=М\/ф)(.+?)(")(\.\s)(?=".+)
Заменить на $1$2,\S
(в этом выражении \S можно заменить на обычный пробел)

Прогонять до упора :)
о! отлично работает, спасибо! :) я бы сам никогда не додумался... :)
 
Без грепа
поменять ». «
на », «
Если подобная последовательность найдётся в строках без "М/ф", то это лишний повод задуматься, а не поменять ли и тут.
 
  • Спасибо
Реакции: carry
Найти (?<=М\/ф)(.+?)(")(\.\s)(?=".+)
Заменить на $1$2,\S
(в этом выражении \S можно заменить на обычный пробел)

Прогонять до упора :)
я немного сократил ваше решение, тоже нормально работает: :)
Найти: (?<=М/ф)(.+?»)\.
Заменить: $1,
 
  • Спасибо
Реакции: LeonidB

Не по теме:
я немного сократил ваше решение
Да это понятно, что можно было сократить. У меня были потом разные варианты, но особого смысла не было все их тут выкладывать, поскольку задача была уже решена :)