2017-02-16 2 views
0

Es ist Tag 001 für mich auf regulären Ausdrücken so tut mir leid, wenn dies ein bisschen dumm ist, habe ich einige Nachforschungen gemacht, kann aber keine Antwort für meine Frage finden; wahrscheinlich nur, weil ich nach dem Falschen suche.Reguläre Ausdrücke Wildcard

Ich habe eine riesige CVS-Datei und ich möchte alle Einträge mit dem Begriff löschen:

Subscribe to Newsletter:   No 

Die Einträge nicht einheitlich sind - damit meine ich

-- 

Anything could be here 

Subscribe to Newsletter:   No 

-- 

ich ausgedünnt haben diese .CSV direkt nach unten mit regulären Ausdrücken (ich denke? Ich verwende Suchen und Ersetzen in Sublime 3), um alle Elemente zu löschen, die ich kann, und ich bin fast da. Nach was ich suche, ist eine Weise, einen Platzhalter zu verwenden, um den Teil zu ignorieren, den ich nicht kenne; dies wie:

^.*-- 

**wild-card** 

Subscribe to Newsletter:   No.*\n 

Wenn kann jeder empfehlen, wo ich erforschen kann, wie dies zu tun, die fabelhaft sein würden, wie ich sagte, ich weg hier gut sein könnte, da es buchstäblich Tag 1 so, wenn jemand mich in den richtigen Punkt könnte Richtung, die wäre großartig!

+0

Wenn Sie bereits den Spaltentext für die Zeile haben, suchen Sie einfach nach "Newsletter abonnieren: \ s * No". – sln

+1

Soweit Lernen Regex [Regex101] (https://www.regex101.com) ist eine großartige Ressource. Sie haben eine vollständige Anleitung zur Syntax neben einer Schnittstelle, mit der Sie Muster interaktiv testen können und genau sehen, wie sie arbeiten. –

+0

@sln Wird nicht nur die Zeile "Newsletter abonnieren" gelöscht? Ich möchte den ganzen Eintrag löschen - wenn er den String enthält, dann möchte ich den ganzen Eintrag von den Kommas zum nächsten löschen, macht das Sinn? –

Antwort

1

1. Problem: Der Punkt . stimmt nicht mit Zeilenvorschüben überein, es sei denn, Sie verwenden das DOTALL-Flag - Sie benötigen das für mehrere Zeilen.

Sie benötigen eine negative Vorschau (?!--), um zu bestätigen, dass Punkte nicht über Segmentbegrenzer -- übereinstimmen.

Try this:

(?s)^--((?!--).)*?Subscribe to Newsletter:\s+No((?!--).)* 

Sie nicht das Newline benötigen, da der Punkt mit der dotall Flagge (?s) aktiviert übereinstimmen.