Explicación

Explicación

Tengo un muro de texto (sin códigos, números ni nada por el estilo). Las oraciones a veces se dividen por la "mitad" mediante un "párrafo" o un "salto de línea manual".

Por ejemplo:

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.

Me gustaría crear una expresión regular o un reemplazo extendido donde pudiera unir estas líneas.

Solía ​​hacer esto en Microsoft Word, donde buscaba "saltos de línea" donde tenía un carácter alfabético delante (en lugar de un punto (.) o un signo de exclamación (!), un signo de interrogación (?) o una cita. marcas (") y las reemplacé con nada.

Ya no uso microsft word y, aunque open office puede hacerlo, es un proceso muy, muy, muy lento.

¿Hay alguna manera de hacer esto en Notepad++, con expresiones regulares o reemplazo extendido?

Respuesta1

Usando una expresión regular, puedes hacer lo siguiente:

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

Reemplazar: $1(es necesario agregar un espacio final, pero no aparece cuando se procesa con Markdown)

Explicación

([^.!?"])agrupará cualquier carácter que no sea ., !, ?o ". Si realmente desea que permita cualquier carácter alfanumérico, puede cambiarlo a ([\w]), que coincidirá con cualquier carácter desde Ahasta Z, ya sea mayúscula o minúscula, cualquier número o un guión bajo ( _). Si realmente estás decidido a permitir solo A, Zpuedes usar ([A-Za-z]).

Los corchetes se utilizan esencialmente para decir "permitir/no permitir los siguientes caracteres" (no permitir se especifica agregando el ^carácter justo después del corchete de apertura). Los corchetes también permiten la sintaxis anterior, la A-Zcual, como es de esperar, permite cualquier valor entre los dos valores proporcionados.

Finalmente, al usar paréntesis alrededor de la agrupación (que se aplica a todas las variaciones proporcionadas anteriormente), este valor se puede volver a colocar en la cadena usando el $1marcador de posición, que se analiza más adelante.

\r\ncoincide con el salto de línea en Notepad++ (en otros editores, un salto de línea puede ser \no \ren su lugar).

En total, las dos secciones de la expresión regular se aseguran de coincidir solo con un carácter que haya especificado, seguido de un salto de línea.

La $1declaración de reemplazo (nuevamente, asegurándose de agregar un espacio después) tomará lo que coincidimos en la expresión regular (el último carácter en esa línea seguido por un salto de línea) y lo colocará nuevamente en la línea (esto es para que no eliminamos el carácter como sucedería sin esta declaración). El espacio simplemente está ahí para garantizar que cuando las líneas se junten, las palabras sigan siendo distintas y no se fusionen.

información relacionada