it-swarm.com.de

Entferne alles außer einem bestimmten Muster

Ich habe eine Protokolldatei mit vielen Zeichenfolgen. Ich möchte alles aus dieser Datei entfernen (find & replace), mit Ausnahme der Zeichenfolge, die mit: phone= beginnt und mit Digits=1 endet.

zum Beispiel: phone=97212345678&step=1&digits=1

Um diese Zeichenfolge zu finden, verwende ich (phone=.*digits=1) und es funktioniert! aber es gelang mir nicht, den regex zu finden, der alles außer dieser Zeichenfolge auswählt und sie alle löscht.

Beispieldatei .

11
Eyal

Um etwas anderes als einen bestimmten Text zu entfernen, müssen Sie .*(text_you_need_to_keep).* verwenden, wobei . mit einer neuen Zeile übereinstimmt.

Verwenden Sie in Notepad ++

Suchen: .*(phone=\S*?digits=1).*
Ersetzen Sie: $1

NOTE: . passt zu newline Die Option muss markiert sein.

Ich verwende \S*? anstelle von .* innerhalb des Aufnahmemusters, da Sie nur möglichst wenige Nicht-Whitespace-Zeichen von phone= bis zur nächstliegenden digits zuordnen möchten. .* ist zu gierig und kann sich mit der DOTALL-Option ON über mehrere Zeilen erstrecken.

UPDATE

Wenn Sie einige multiple Vorkommen eines Musters in einem Text beibehalten möchten, können Sie dies in Notepad ++ verwenden

.*?(phone=\S*?digits=1)

Ersetzen Sie mit $1\n. Damit werden Sie entfernen Sie alle unerwünschten Teilstrings, aber die nach dem letzten Vorkommen Ihres notwendigen Submusters.

Sie müssen den letzten Teil entweder manuell oder mit entfernen

   FIND: (phone=\S*?digits=1).*
REPLACE: $1
15

Wenn Sie einige Tools wie Notepad ++ oder EditPlus verwenden, können Sie die folgende Regex-Ersetzung verwenden:

Suchstring: ^phone=(\d+&step=1&)digits=1

Ersetzen Sie die Zeichenfolge: \1

1
York Mak

Regex, um das Spiel zu finden:

/^phone=.+&digits=1$/

Datei außer Übereinstimmung ersetzen:

/^(?!phone=.+&digits=1$).*/gm

0
Sandip Ransing

Angenommen, Sie haben Daten wie:

"für Ausführungsplan [ID = 7420] am 12.06.2014 08:00:00" 

sie möchten nur den [ID = dddd] -Teil aus Tausenden von Zeilen extrahieren . Drücken Sie in Notepad ++ die Tastenkombination Strg + h.

Finde was: 

.*?(\[ID = \d+\]).*

Ersetzen mit: 

\1

Für Ihre spezifische Zeichenfolge wäre Regex:

.*?(phone=.*?digits=1).*
0
ozanmut