Explicação

Explicação

Eu tenho uma parede de texto (sem código, números ou algo parecido). As frases às vezes são divididas no "meio" por um "parágrafo" ou "quebra de linha manual".

Por exemplo:

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.

Gostaria de criar um regex ou substituição estendida onde pudesse unir essas linhas.

Eu costumava fazer isso no Microsoft Word, onde procurei por "quebras de linha" onde havia um caractere alfabético antes (em vez de um ponto (.) ou um ponto de exclamação (!), ponto de interrogação (?) ou aspa marcas (") e as substituiu por nada.

Eu não uso mais o microsft word e, embora o open office possa fazer isso, é um processo muito, muito, muito lento.

Existe uma maneira de fazer isso no notepad++, com regex ou substituição estendida?

Responder1

Usando uma regex, você pode fazer o seguinte:

Encontre o que:([^.!?"])\r\n

Substituir: $1(um espaço à direita precisa ser adicionado, mas não aparece quando renderizado com Markdown)

Explicação

([^.!?"])agrupará qualquer caractere que não seja ., !, ?ou ". Se você realmente quiser permitir qualquer caractere alfanumérico, poderá alterar isso para ([\w]), que corresponderá a qualquer caractere de Aaté Z, seja maiúsculo ou minúsculo, qualquer número ou sublinhado ( _). Se você realmente deseja permitir apenas A, Zvocê pode usar ([A-Za-z]).

Os colchetes são usados ​​​​para dizer essencialmente "permitir/proibir os seguintes caracteres" (a proibição é especificada adicionando o ^caracter logo após o colchete de abertura). Os colchetes também permitem a sintaxe acima, A-Zque, como você pode esperar, permite qualquer coisa entre os dois valores fornecidos.

Finalmente, usando os parênteses ao redor do agrupamento (que se aplica a todas as variações fornecidas acima), esse valor pode ser colocado de volta na string usando o $1espaço reservado, que será discutido mais adiante.

\r\ncorresponde à quebra de linha no Notepad++ (em outros editores, uma quebra de linha pode ser \nou \r).

Ao todo, as duas seções da regex em si garantem que correspondam apenas a um caractere que você especificou, seguido por uma quebra de linha.

A $1instrução replace (novamente, certificando-se de adicionar um espaço depois) pegará o que correspondemos na própria regex (o último caractere daquela linha que é seguido por uma quebra de linha) e o colocará de volta na linha (isso é para que não removemos o caractere como aconteceria sem esta declaração). O espaço existe simplesmente para garantir que, quando as linhas são unidas, as palavras ainda sejam distintas e não se fundam.

informação relacionada