Wie entferne ich Zeilenumbrüche (oder Zeilenumbrüche) nur aus bestimmten Teilen eines Textblocks?

15754
Luke Allen

Wenn ich formatierten Text aus einer PDF-Datei kopiere, die für Zeilenumbrüche (oder Zeilenumbrüche) formatiert ist, muss ich einen Weg finden, diese Zeilenumbrüche zu entfernen, ohne das Absatzformat zu entfernen.

Dazu muss ich RegEx (reguläre Ausdrücke) verwenden, um nur die Zeilenumbrüche zu entfernen, denen kein Punkt vorangestellt ist.

Wenn zum Beispiel ein Textstring direkt nach einem Punkt einen Zeilenumbruch aufweist, ist dies offensichtlich fast immer ein legitimer Zeilenumbruch, der einen neuen Absatz beginnen wird. Wenn ein Textstring einen Zeilenumbruch in der Mitte oder nach einem Wort ohne Punkt enthält, ist dies einfach Teil der fehlerhaften Formatierung, die ich entfernen muss.

Mein Problem ist, dass ich nicht weiß, wie ich RegEx verwenden soll, um nur die ^ p-Tags in Word oder CRLF oder Zeilenumbrüche in einem beliebigen Format zu entfernen, unter den Bedingungen, dass es nach einem Punkt keine Tags mehr gibt.

6
Bitte erwähnen Sie Ihr Betriebssystem. An nichts als an Fenstern ist dies trivial. Ich nehme an, Sie benutzen Windows? Welche RegEx-Engine verwenden Sie? Wir benötigen weitere Details, um Ihnen ein funktionierendes RegEx zur Verfügung zu stellen. terdon vor 11 Jahren 0
Möchten Sie einfach die Zeilenumbrüche entfernen? Ich vermute, Sie möchten sie wirklich durch Leerzeichen ersetzen. Und was ist mit Zeilenumbrüchen nach `?` Oder `!`? Oder `.)`, `?)` Oder `!)`? Scott vor 10 Jahren 0

4 Antworten auf die Frage

3
mar4enk0

Solution for MS Word:

  1. Open Find & Replace (Ctrl+H) and check the "Use wildcards" option. If you don't see the "Use wildcards" option, click "More".
  2. Copy the following into the "Find What" box: ([!.])^0013
  3. Copy the following into the "Replace What" box: \1
  4. Click "Replace All"

Explanation:

  • [!.] means "find every symbol except dot"
  • ^0013 is a paragraph mark, so in the "Find What" we will find every non-dot symbol followed by a paragraph mark
  • Parentheses mean that we will place that non-dot symbol in memory to use later
  • \1 replaces our memorized symbol at the location where we find it

Note that the ^0013 is not inside the parentheses, so the final text would be without paragraph marks.

0
hsawires

Versuchen Sie in Word den manuellen Zeilenumbruch ^ldurch die Absatzmarke zu finden ^p.

Es ist aus einem pdf alle Zeilenumbrüche sind ^ p Luke Allen vor 11 Jahren 0
OK. versuchen Sie ^ p durch a zu ersetzen Dadurch werden die Absatzmarken behoben, aber das einzige Problem, dem Sie gegenüberstehen, besteht darin, dass der gesamte Absatz nur ein Absatz ist. hsawires vor 11 Jahren 0
Ja, das ist die Frage, die ich gepostet habe, um zu lösen, dass ich bereits wusste, ^ P durch zu ersetzen , müssen nur ^ p ersetzen, die nicht vorhanden sind davor werden die Absätze beibehalten, die Formatierungsbrüche jedoch nicht Luke Allen vor 11 Jahren 0
Ich habe versucht, die PDF-Datei in Acrobat im Word-Dokument zu speichern, und es funktioniert einwandfrei. Sie können jedoch zusätzliche Arbeiten ausführen, um die Doc-Datei von unerwünschten Texten zu bereinigen. Einige andere Software kann Ihnen bei der Konvertierung von PDF2DOC helfen hsawires vor 11 Jahren 0
0
user1583016

Da Sätze in mehr Satzzeichen enden können als in einem Zeitraum, in dem ich die Antwort von hsawires aktualisiert habe :

  1. Finden Sie alle Symbole außer Punkt, Fragezeichen, Ausrufezeichen, Anführungszeichen oder Doppelpunkt.
  2. In einigen Fällen möchten Sie \1in das Feld "Replace What" ein Leerzeichen einfügen, um das letzte Wort in einer Zeile nicht mit dem ersten Wort in der nächsten Zeile zu kombinieren.

Lösung für MS Word:

  1. Öffnen Sie Suchen und Ersetzen ( Ctrl+ H) und aktivieren Sie die Option "Platzhalter verwenden".
  2. Wenn Sie die Option "Platzhalter verwenden" nicht sehen, klicken Sie auf "Mehr".
  3. Kopieren Sie Folgendes in das Feld "Suchen nach": ([!.\?\!"':])^0013
  4. Kopieren Sie Folgendes in das Feld "Replace What": \1
  5. Klicken Sie auf "Alle ersetzen".

Erläuterung:

[!.\?\!"':]bedeutet "Finde alle Symbole außer Punkt, Fragezeichen, Ausrufezeichen, Anführungszeichen oder Doppelpunkt." - ^0013ist eine Absatzmarke. In "Suchen nach" finden wir jedes Nicht-Punkt-Symbol, gefolgt von einer Absatzmarke. - Klammern bedeuten, dass wir dieses Nicht-Punkt-Symbol zur späteren Verwendung im Speicher ablegen. - \1ersetzt unser gespeichertes Symbol an der Stelle, an der wir es finden.

Beachten Sie, dass das ^0013nicht in den Klammern steht. Der abschließende Text wäre also ohne Absatzmarken.

0
Keawe

Eine wesentlich einfachere Methode zum Erstellen / Ändern eines Adressblocks vor dem Ausschneiden und Einfügen in eine E-Mail oder ein anderes Dokument besteht darin, eine 3/4 -Zeilentabelle zu definieren und die Adressdaten in jede Zeile einzugeben. Dann die Linien loswerden.