2016-07-22 11 views
0

So habe ich eine Klartextdatei von Nachrichten aus Microsoft Lync exportiert. Im Grunde habe ich den Quellcode genommen und den HTML-Code entfernt. Es sieht etwa so aus:Regex, um Klartext Chat-Protokoll zu entfernen?

Smith, Joe [10:48AM]: 
Hey guys! 
How's it going? 
Smith, Jane [10:49AM]: 
Hey! 
Doe, John [10:50AM]: 
Wassup! 
Where are we going out today? 

So wie Sie sehen können, sind sie alle gegen einander gestoßen, aber noch wichtiger ist, sind einige Benutzer Nachrichten über mehrere Zeilen.

Was ich tun möchte, ist ein Regex-Ausdruck zu erstellen, um in einem Notepad ++ Makro zu helfen, das alles außer den Nachrichten eines bestimmten Benutzers durchgeht und entfernt, ihren Namen und den Zeitstempel ausgenommen.

So oben für mein Beispiel, wenn mein Benutzer war John Doe, das Ergebnis ich so aussehen würde wollen:

Wassup! 
Where are we going out today? 

Ich bin für einen regulären Ausdruck suchen, der im Grunde alle Nutzer ausrichten, sondern John Doe damit ich alle Nachrichten durchgehen und löschen kann (ich kann seinen Namen und den Zeitstempel danach abziehen). Die Sache ist, da einige Nachrichten mehrzeilig sind, brauche ich eine Möglichkeit zu sagen "Wählen Sie diesen Benutzer und alle Zeilen ihrer Nachrichten bis zum nächsten Benutzer". Vielleicht wäre das mit Javascript oder so etwas einfacher, aber ich denke, es sollte auch so funktionieren.

Antwort

0

Mit Notepad ++, ersetzen Sie einfach oft:

^.*\[.*[AP]M\]:\r\n(?:[\w\W]*?SURNAME, NAME \[.*[AP]M\]:((?:(?!.*\[.*[AP]M\]).*)*)|(?![\w\W]*\[.*[AP]M\]:)[\w\W]*) 

mit $1, SURNAME und NAME mit denen, ersetzen Sie benötigen.

Sie müssen these settings verwenden.

0

Targeting alle Benutzer aber John Doe:

(?sm)^(?!Doe, John)[^\r\n]+:$\R(.*?(?=\R[^\r\n[]+\[.*:|\Z)) 

Live demo

Verwandte Themen