2016-06-09 11 views
0

Ich habe eine Textdatei, die wie folgt aussieht:Format eine Textdatei von Regex und ersetzen

Chanelle 
    Jettie 
    Winnie 
    Jen 
    Shella 
    Krysta 
    Tish 
    Monika 
    Lynwood 
    Danae 
    2649 
    2466 
    2890 
    2224 
    2829 
    2427 
    2816 
    2648 
    2833 
    2453 

Ich muss es wie folgt

Chanelle 2649 
    Jettie  2466 
    ...  ... 

ich viel aussehen anprobiert erhabener Editor, konnte aber die Regex dafür nicht herausfinden. Kann jemand demonstrieren, wenn es möglich ist?

+0

Das glaube ich nicht, dass Sie dies mit nur regex tun werden in der Lage verwenden könnte. Verfügen Sie über eine Programmiersprache? Sie könnten etwas wie '/^\ s * \ d + $/m' machen, um den ganzen Zahlenverweis zu ziehen, dann die Links über Alphabezeichnungen (' explode ("\ n", $ string); 'in PHP) teilen und sie abgleichen 1 - 1, um eine neue Datei zu erstellen. – chris85

+0

Ja, ich kenne mehrere Sprachen, aber ich versuche dies nur mit Regex zu erreichen. Wie Sie gesagt haben, vielleicht kann es nicht mit Regex allein getan –

+0

Sie brauchen eigentlich keine Regex für das ... – JanLeeYu

Antwort

3

Ich habe Folgendes in Notepad ++ getestet, aber es sollte universell funktionieren.

verwenden als Suchbegriff:

(?:(\s+[A-Za-z]+)(\r?\n))((?:\s*[A-Za-z]*\r?\n)+)\s+(\d+) 

und dies als Ersatz:

$1 $4$2$3 

Ausführen eines ersetzen damit einmal eine Zeile zu einem Zeitpunkt tun werden, wenn Sie es mehrere laufen Mal wird es weiterhin Linien ersetzen, bis keine passenden Linien mehr übrig sind.

Alternativ können Sie diese als Ersatz verwenden, wenn Sie die Werte durch Tabulatoren ausgerichtet haben wollen, aber es ist nicht in allen Fällen geht zum Spiel:

$1\t\t$4$2$3 
+0

Leider keine Übereinstimmung auf erhabenen, Notepad ++ und Online-Regex-Sites :( –

+0

Das funktioniert gut für mich in ST3.Vergewissern Sie sich, dass Sie die Regex-Anpassung aktiviert haben, und drücken Sie dann auf Ersetzen, bis alle Zahlen transponiert sind. – MattDMo

2

Während die regex answer by SeinopSys arbeiten, Sie don Sie brauchen dafür keine Regex - stattdessen können Sie die Mehrfachcursor von Sublime nutzen.

  1. Platzieren Sie den Cursor am Anfang der Linie 1, dann halten Sie Shift- alle Namen zu wählen.

  1. Hit CtrlShift-L (Selection -> Split into Lines), um die Auswahl in Linien aufgeteilt.

  1. CtrlC zu kopieren.

  2. Setzen Sie den Cursor in Zeile 11 (die erste Zahl Linie) und drücken CtrlShift- (Windows/OS X) oder AltVerschiebung (Linux) zu plazieren Cursor am Anfang jeder Zahlenzeile.

  1. Hit CtrlV die Namen einzufügen, bevor die Zahlen.

  1. Sie können nun die Namen an der Spitze löschen und du bist fertig. Alternativ Sie CtrlX zu schneiden, die Namen der in Schritt 3
+0

In der Theorie sollte Shift + Click auch funktionieren, wenn die Namensliste zu lang ist, um mit Shift + Down innerhalb eines vernünftigen Wertes auszuwählen Zeitrahmen – SeinopSys

+0

@SeinopSys das ist wahr, ich habe in diesem Beispiel Shift-Down nur wegen der geringen Größe der Liste verwendet. – MattDMo