Notepad ++ regex

2

Eu tenho uma parede de texto (sem código, números ou qualquer coisa assim). As frases são às vezes 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.

Eu gostaria de criar uma regex ou uma substituição estendida onde eu poderia juntar essas linhas.

Eu costumava fazer isso no microsoft word, onde eu procurei por "quebras de linha", onde tinha um caractere de alfabeto antes dele (em vez de um ponto (.) ou um ponto de exclamação (!), ponto de interrogação (? ) ou aspas (") e substituiu-os por nada.

Eu não uso mais a palavra microsft e, embora o Open Office possa fazê-lo, é um processo realmente muito lento.

Existe uma maneira de fazer isso no notepad ++, com regex ou extended replace?

    
por beemspam 30.07.2014 / 11:45

1 resposta

2

Usando um regex, você pode fazer o seguinte:

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

Substitua: $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 quisesse permitir qualquer caractere alfanumérico, você poderia alterar isso para ([\w]) , que corresponderá a qualquer caractere de A a Z , maiúsculas ou minúsculas, qualquer número ou um sublinhado ( _ ). Se você realmente está definido apenas com A to Z , você pode usar ([A-Za-z]) .

Os colchetes são usados para dizer essencialmente "permitir / não permitir os seguintes caracteres" (o uso de não permissão é especificado adicionando o caractere ^ logo após o colchete de abertura). Os colchetes também permitem a sintaxe acima de A-Z , o que, como você pode esperar, permite qualquer coisa entre os dois valores fornecidos.

Finalmente, usando os parênteses em torno do agrupamento (que se aplica a todas as variações fornecidas acima), esse valor pode ser colocado novamente na string usando o espaço reservado $1 , que é discutido mais abaixo.

\r\n corresponde à quebra de linha no Notepad ++ (em outros editores, uma quebra de linha pode ser \n ou \r ).

No total, as duas seções da regex em si só combinam apenas um caractere que você especificou, seguido por uma quebra de linha.

A instrução $1 replace (novamente, certificando-se de adicionar um espaço depois) irá pegar o que nós combinamos na própria regex (o último caractere na linha que é seguido por uma quebra de linha) e colocá-lo de volta no line (isto é para que não removamos o personagem como aconteceria sem essa declaração). O espaço é simplesmente lá para garantir que quando as linhas são reunidas, as palavras ainda são distintas e não se fundem.

    
por 30.07.2014 / 12:30