2

У меня есть стена текста (без кода, цифр или чего-то в этом роде). Предложения иногда разделяются в "середине" на "абзац" или "разрыв строки".

Например:

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, где я искал "разрывы строк", где перед ним был символ алфавита (вместо точки (.) Или восклицательный знак (!), Знак вопроса (?) или кавычки (") и заменить их ничем.

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

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

1 ответ1

2

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

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

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

объяснение

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

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

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

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

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

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

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