![Notepad++/Regulärer Ausdruck zum Suchen von Zeilen mit gleichem Anfang und unterschiedlichem Ende](https://rvso.com/image/1304074/Notepad%2B%2B%2FRegul%C3%A4rer%20Ausdruck%20zum%20Suchen%20von%20Zeilen%20mit%20gleichem%20Anfang%20und%20unterschiedlichem%20Ende.png)
Ich habe also ein bisschen gelesen und festgestellt, dass NotePad++ keine „normalen“ regulären Ausdrücke verwendet (ich fange an zu denken, dass ich einfach zu SciTE zurückkehren werde), aber hier ist meine Frage:
Ich habe eine exportierte Datenliste mit einigen redundanten Daten, die ich bereinigen und in eine gute CSV-Datei für den Import in Adressbücher konvertieren möchte (ich migriere eine Faxserverlösung, die alte ist ALT und dies ist daher das Beste, was ich für den Export bekommen konnte).
Die Zeile, die ich aus jeder Eintragsgruppe entfernen möchte, beginnt immer
Eintrag: NAME ~
Und dann folgt ein 12-stelliger alphanumerischer (scheinbar hexadezimaler) Code, der für jede Eintragsgruppe eindeutig ist. Für einige Eintragsgruppen folgt auf „NAME“ ein menschenlesbarer Eintrag, aber das sind so wenige, dass ich sie manuell entfernen kann, sodass das Zuordnen keine große Aufgabe ist.
Ich möchte also jede Zeile finden, die mit Entry: beginnt, und sie bis zum Ende der Zeile auswählen. Jeder Eintrag in jeder Gruppe steht in einer separaten Zeile. Dann verwende ich Suchen und Ersetzen, um diese Zeilen aus der Liste zu entfernen.
UPDATE: Ein- und Ausgabe
Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: John
FamilyName: John
DearName: John
Organisation: Acme 1 Corp
Via: FAX-ANY 1(555) 123-4567
Entry: NAME ~00003193820
ShortName: ~00003193820
Owner: USRENAME
Name: Sam
FamilyName: Sam
DearName: Sam
Organisation: Acme 2 LLC
Via: FAX-ANY 1(555) 890-1234
Hier sind zwei Eintragsgruppen. Ich möchte aus jeder einzelnen Gruppe die Zeilen entfernen, die mit „Entry:“ beginnen.
Antwort1
Eine weitere Möglichkeit wäre
^Entry: NAME .*
Dabei wird nach Zeilen gesucht, die mit beginnen, Entry: NAME
und nach allem, was danach kommt.
Antwort2
Verwenden von
^Entry: NAME ~\d+$
da das Suchmuster wie gewünscht zu funktionieren scheint.
Ich persönlich würde empfehlen, den \d
Platzhalter (der mit jeder einzelnen Ziffer im Bereich von 0
bis übereinstimmt 9
) anstelle eines allgemeineren .
Platzhalters zu verwenden. Tatsächlich sollten Sie ihn sogar so gestalten:
^Entry: NAME ~\d{12}$
um anzugeben, dass Sie erwartengenau12 Ziffern in einer Reihe. Auf diese Weise können Sie einen Eintrag nicht versehentlich ersetzen, wenn er etwas enthält, das Sie nicht erwartet haben.
Wenn die Zeichenfolge in hexadezimaler Notation vorliegt, können Sie Folgendes verwenden:
^Entry: NAME ~[0-9a-fA-F]{12}$
Bitte beachten Sie, dass ich nicht überprüft habe, ob die letzten beiden Beispiele in Notepad++ ordnungsgemäß funktionieren, aber meines Wissens ist das alles eine ziemlich grundlegende Syntax.