Erläuterung

Erläuterung

Ich habe eine Textwand (kein Code, keine Zahlen oder ähnliches). Die Sätze werden manchmal in der „Mitte“ durch einen „Absatz“ oder „manuellen Zeilenumbruch“ getrennt.

Zum Beispiel:

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.

Ich möchte einen regulären Ausdruck oder einen erweiterten Ersetzungsvorgang erstellen, mit dem ich diese Zeilen zusammenfügen kann.

Früher habe ich dies in Microsoft Word gemacht, wo ich nach „Zeilenumbrüchen“ gesucht habe, vor denen ein alphabetisches Zeichen stand (anstelle eines Punkts (.) oder eines Ausrufezeichens (!), Fragezeichens (?) oder Anführungszeichens (") und diese durch nichts ersetzt habe.

Ich verwende Microsoft Word nicht mehr, und obwohl Open Office dies kann, ist es ein wirklich, wirklich, wirklich langsamer Prozess.

Gibt es eine Möglichkeit, dies in Notepad++ mit regulären Ausdrücken oder erweitertem Ersetzen zu tun?

Antwort1

Mit einem regulären Ausdruck können Sie Folgendes tun:

Finde was :([^.!?"])\r\n

Ersetzen: $1(ein nachstehendes Leerzeichen muss hinzugefügt werden, wird aber beim Rendern mit Markdown nicht angezeigt)

Erläuterung

([^.!?"])gruppiert alle Zeichen, die nicht ., !, ?oder sind ". Wenn Sie tatsächlich alle alphanumerischen Zeichen zulassen möchten, können Sie dies in ändern , was alle Zeichen von bis ([\w])findet , egal ob Groß- oder Kleinbuchstaben, alle Zahlen oder ein Unterstrich ( ). Wenn Sie wirklich nur bis zulassen möchten , können Sie verwenden .AZ_AZ([A-Za-z])

Die eckigen Klammern werden im Wesentlichen verwendet, um „die folgenden Zeichen zulassen/nicht zulassen“ auszudrücken (nicht zulassen wird angegeben, indem das ^Zeichen direkt nach der öffnenden eckigen Klammer hinzugefügt wird). Eckige Klammern ermöglichen auch die obige Syntax, A-Zdie, wie Sie erwarten können, alles zwischen den beiden angegebenen Werten zulässt.

Schließlich kann dieser Wert durch die Verwendung der Klammern um die Gruppierung (die für alle oben angegebenen Variationen gilt) mit Hilfe des Platzhalters wieder in die Zeichenfolge eingefügt werden $1, was weiter unten erläutert wird.

\r\n\nentspricht dem Zeilenumbruch in Notepad++ (in anderen Editoren kann stattdessen oder ein Zeilenumbruch sein \r).

Insgesamt stellen die beiden Abschnitte des regulären Ausdrucks selbst sicher, dass nur ein von Ihnen angegebenes Zeichen gefolgt von einem Zeilenumbruch übereinstimmt.

Die $1Ersetzungsanweisung (achten Sie erneut darauf, danach ein Leerzeichen einzufügen) nimmt das, was wir im regulären Ausdruck selbst gefunden haben (das letzte Zeichen in dieser Zeile, auf das ein Zeilenumbruch folgt) und fügt es wieder in die Zeile ein (damit wir das Zeichen nicht entfernen, wie es sonst ohne diese Anweisung passieren würde). Das Leerzeichen ist lediglich dazu da, um sicherzustellen, dass die Wörter beim Zusammenziehen der Zeilen immer noch unterschiedlich sind und nicht miteinander verschmelzen.

verwandte Informationen