6

Всякий раз, когда я копирую отформатированный текст из файла PDF, который отформатирован так, чтобы иметь разрывы строк (или возврат каретки), мне нужно найти способ удалить эти разрывы строк, не удаляя формат абзаца.

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

Так, например, если строка текста имеет разрыв строки сразу после точки, это, очевидно, почти всегда является допустимым разрывом строки, который начнет новый абзац. Если строка текста содержит середину слова разрыва строки или после слова без точки, это просто часть плохого форматирования, от которого мне нужно избавиться.

Моя проблема в том, что я не знаю, как использовать RegEx, чтобы он удалял только теги ^ p в слове или CRLF или разрывы строк в любом формате при условии, что он пропускает после периода.

4 ответа4

3

Решение для MS Word:

  1. Откройте "Найти и заменить" (Ctrl+H) и установите флажок "Использовать подстановочные знаки". Если вы не видите опцию "Использовать подстановочные знаки", нажмите "Дополнительно".
  2. Скопируйте следующее в поле "Найти что": ([!.])^0013
  3. Скопируйте следующее в поле "Заменить чем": \1
  4. Нажмите "Заменить все"

Объяснение:

  • [!.] означает «найти каждый символ, кроме точки»
  • ^0013 - это знак абзаца, поэтому в "Найти что" мы найдем каждый не точечный символ с последующим знаком абзаца
  • Скобки означают, что мы поместим этот не точечный символ в память для последующего использования
  • \1 заменяет наш запомненный символ в том месте, где мы его находим

Обратите внимание, что ^0013 не находится в скобках, поэтому окончательный текст будет без знаков абзаца.

0

Поскольку предложения могут заканчиваться большим количеством знаков препинания, чем период, на который я обновил ответ hsawires :

  1. Найдите все символы, кроме точки, вопросительного знака, восклицательного знака, закрывающей кавычки или двоеточия.
  2. Кроме того, в некоторых случаях вы можете добавить пробел после \1 в поле «Заменить что», чтобы не сочетать последнее слово в одной строке с первым словом в следующей строке.

Решение для MS Word:

  1. Откройте «Найти и заменить» (Ctrl+H) и установите флажок «Использовать подстановочные знаки».
  2. Если вы не видите опцию «Использовать подстановочные знаки», нажмите «Еще».
  3. Скопируйте следующее в поле «Найти что»: ([!.\?\!"':])^0013
  4. Скопируйте следующее в поле «Заменить чем»: \1
  5. Нажмите «Заменить все».

Объяснение:

[!.\?\!"':] означает« найти все символы, кроме точки, вопросительного знака, восклицательного знака, закрывающей кавычки или двоеточия ». - ^0013 - это знак абзаца, поэтому в «Найти что» мы найдем каждый не точечный символ, за которым следует знак абзаца. - Скобки означают, что мы поместим этот не точечный символ в память для последующего использования. - \1 заменяет наш запомненный символ в том месте, где мы его находим.

Обратите внимание, что ^0013 не находится в скобках, поэтому окончательный текст будет без знаков абзаца.

0

В Word попробуйте найти и заменить ручной разрыв строки ^l на знак абзаца ^p .

0

Гораздо более простой способ создать / изменить адресный блок перед тем, как вырезать и вставить его в электронное письмо или другой документ, - объявить таблицу из 3/4 строк и ввести адресные данные в каждую строку. Тогда избавьтесь от линий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .