Объяснение

Объяснение

У меня есть стена текста (без кода, цифр или чего-то подобного). Предложения иногда разделены «посередине» «абзацем» или «ручным переносом строки».

Например:

The most obvious part was a hollow, echoing quiet, made by things that
were lacking. If there had been a wind it would have sighed through the
trees, set the inn’s sign creaking on its hooks, and brushed the silence
down the road like trailing autumn leaves. If there had been a crowd,
even a handful of men inside the inn, they would have filled the silence
with conversation and laughter, the clatter and clamor one expects from
a drinking house during the dark hours of night. If there had been music
... but no, of course there was no music. In fact there were none of
these things, and so the silence remained.

Я хотел бы создать регулярное выражение или расширенную замену, где я мог бы сшить эти строки вместе.

Раньше я делал это в Microsoft Word, где искал «переносы строк», где перед ними стояли буквы алфавита (вместо точки (.) или восклицательного знака (!), вопросительного знака (?) или кавычек ("), и заменял их ничем.

Я больше не использую Microsoft Word, и хотя Open Office может это сделать, это очень-очень-очень медленный процесс.

Есть ли способ сделать это в Notepad++ с помощью регулярных выражений или расширенной замены?

решение1

Используя регулярное выражение, вы можете сделать следующее:

Найти то, что :([^.!?"])\r\n

Заменить: $1(необходимо добавить завершающий пробел, но он не отображается при отображении с помощью Markdown)

Объяснение

([^.!?"])сгруппирует любой символ , кроме ., или . Если вы действительно хотите разрешить любой буквенно-цифровой символ, вы можете изменить это на , что будет соответствовать любому символу от до , как заглавным, так и строчным, любой цифре или подчеркиванию ( ). Если вы действительно настроены разрешить только до , вы можете использовать .!?"([\w])AZ_AZ([A-Za-z])

Квадратные скобки используются, чтобы по сути сказать «разрешить/запретить следующие символы» (запрет указывается путем добавления символа ^сразу после открывающей квадратной скобки). Квадратные скобки также допускают указанный выше синтаксис A-Z, который, как вы можете ожидать, допускает все между двумя предоставленными значениями.

Наконец, используя скобки вокруг группировки (что применяется ко всем вариантам, представленным выше), это значение можно поместить обратно в строку с помощью заполнителя $1, который обсуждается ниже.

\r\nсоответствует переносу строки в Notepad++ (в других редакторах вместо этого может быть перенос строки \nили \r).

В целом, две части регулярного выражения гарантируют соответствие только указанному вами символу, за которым следует перенос строки.

Оператор $1replace (снова обязательно добавляя пробел после этого) возьмет то, что мы сопоставили в самом регулярном выражении (последний символ в этой строке, за которым следует перенос строки) и поместит его обратно в строку (это делается для того, чтобы мы не удалили символ, как это произошло бы без этого оператора). Пробел нужен просто для того, чтобы при объединении строк слова оставались отдельными и не сливались вместе.

Связанный контент