Объединение строк в предложения

Переводчики часто сталкиваются с ситуацией, когда после извлечения текста на перевод из формата PDF простым копированием или с распознаванием средствами OCR предложения оказываются разорванными символами абзаца. Это, конечно, затрудняет работу с подобными файлами в системах ТМ.

Для филологов иногда актуальна задача объединения строк стихотворных произведений в соответствии с их членением на предложения.
Рассмотрим простое решение подобных задач на примере с песней Виктора Цоя «Звезда по имени Солнце».

Нам нужно, чтобы ее текст приобрел такой вид (нажмите, чтобы развернуть).Белый снег, серый лед, // На растрескавшейся земле.
Одеялом лоскутным на ней - // Город в дорожной петле.
А над городом плывут облака, // Закрывая небесный свет.
А над городом - желтый дым, // Городу две тысячи лет, // Прожитых под светом Звезды // По имени Солнце...
И две тысячи лет - война, // Война без особых причин.
Война - дело молодых, // Лекарство против морщин.
Красная, красная кровь - // Через час уже просто земля, // Через два на ней цветы и трава, // Через три она снова жива // И согрета лучами Звезды // По имени Солнце...
И мы знаем, что так было всегда, // Что Судьбою больше любим, // Кто живет по законам другим // И кому умирать молодым.
Он не помнит слово "да" и слово "нет", // Он не помнит ни чинов, ни имен.
И способен дотянуться до звезд, // Не считая, что это сон, // И упасть, опаленным Звездой // По имени Солнце...

Воспользуемся функцией замены по подстановочным знакам в MS Word.
Скопируем текст песни в MS Word и вызовем окно замены (CTRL+H):
  • В строку Найти: введем ([!\.\?\!…])(^0013).
  • В строку Заменить на: введем \1 // (после единицы со слэшем влево пробел, два слэша вправо и еще один пробел).
Скриншот

Нажав Заменить все, получаем текст в том виде, в каком он был приведен выше.

Пояснения по используемым символам
В строке Найти:
(…)
Отдельное выражение для замены. Порядок следования выражений определяет их нумерацию.
[...]Набор (или диапазон) знаков, формирующих выражение.
!Исключение набора (или диапазона) символов после восклицательного знака из выражения.
\Указание на то, что определенный символ, являющийся специальным, в данном случае выступает в собственном качестве.

Соответственно, поисковую строку ([!\.\?\!…])(^0013) можно прочитать следующим образом: найти такую последовательность символов, при которой перед знаком абзаца (^0013) не стоит точка (\.), вопросительный знак (\?), восклицательный знак (\!) или многоточие (…).

В строке Заменить на:
\1Оставляем первое заключенное в скобки выражение.
 // Вместо второго заключенного в скобки выражения (знака абзаца) подставляем два слэша вправо, ограниченные с обеих сторон пробелами.

Подробное руководство по использованию этой функции можно посмотреть здесь.