2

У меня есть несколько документов Word, в которых разрывы строк (разрывы абзацев) были добавлены исключительно по косметическим соображениям (возможно, человеком, но, возможно, системой OCR или чем-то подобным). Я хочу удалить эти дополнительные разрывы строк из документов. По сути, «дополнительный» разрыв строки - это тот, который окружен строчными буквами с обеих сторон (с дополнительным пробелом). К сожалению, однако, если я хочу найти разрывы абзацев в Word (^ p), я не могу использовать классы символов для поиска только строчных букв ([az]) и наоборот.

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

/[a-z]\s*\n\s*[a-z]/

и замените новую строку пробелом. Можно ли как-нибудь найти метки абзаца (^ p в Word) и классы символов (или просто строчные буквы в целом)?

ПРИМЕР:

ЗАГЛАВИЕ¶
Это какой-то текст.

не будет соответствовать, но

этот текст в одну строку и
переходит к следующей строке.

будет соответствовать, и «¶» будет заменен пробелом.

2 ответа2

5

Из того, что вы сказали, я не могу сказать, знаете ли вы, что, если вы нажмете « More >> » в диалоговом окне «Найти и заменить» Microsoft Word, вы получите панель «Параметры поиска», которая содержит «Использовать подстановочные знаки» вариант.  Обратите внимание, что он поддерживает загадочный подстановочный язык, а не нотацию регулярных выражений.  Чтобы начать с этой опции, используйте [a-z]^13[a-z] .  По какой-то причине вы не можете использовать ^p в поиске по шаблону, но ^13 является эквивалентом ^p включенным по шаблону символом.

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

  • [a-z]^13[a-z]
  • [a-z][^t ]{1,99}^13[a-z]
  • [a-z]^13[^t ]{1,99}[a-z] и
  • [a-z][^t ]{1,99}^13[^t ]{1,99}[a-z]

поскольку, как ни странно, ^t работает в режиме подстановки. \s и * не означают то, что они имеют в виду в регулярных выражениях. {n,m} делает работу, но n должен быть положительным.  И обратите внимание, что вы не можете просто заменить совпадения пробелом, так как последняя предыдущая буква и первая следующая буква включаются в совпадение и будут засорены.

Для дополнительного кредита: вы можете искать - (дефис) как последний символ печати перед разрывом строки; но обязательно рассмотрите эти два (разных) случая:

                                                          ... окруженный нижним ¶
буквы регистра с обеих сторон (с дополнительными пробелами).  Unfor-¶
к счастью, хотя…

0

^13 - это эквивалент ^p включенным подстановочным знаком.

Это почти верно, но обратите внимание, что между ^13 и ^p есть небольшая разница. Разрывы абзацев, замененные на ^13 похоже, теряют двойной пробел, который вы получаете с разрывом абзаца в обычном стиле в Word.

first paragraph¶

second paragraph¶

third paragraph¶

становится

first paragraph¶
second paragraph¶
third paragraph¶

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

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