2017-11-13 2 views
1

habe ich eine Textdatei mit einer Liste von Elementen durch Zeilenumbrüche getrennt, wie folgt aus:Regex Hinzufügen von unerwünschten Zeilenumbruch zwischen Rückreferenzierung und wörtlichen in Notepad ++

alpha 
beta 
gamma 
... 

ich es in diesem Format erhalten möchten:

(alpha), 
(beta), 
(gamma), 
... 

Also habe ich folgende reguläre Ausdrücke in Notepad ++ verwenden für das ersetzen Sie diese Zeilen:

Find: ([^\n]+) 
Replace: \($1\), 

aber die Ausgabe hat jetzt seltsam anderen Zeilenumbruch für jede Zeile hinein:

(alpha 
), 
(beta 
), 
(gamma 
), 
... 

ich keine Ahnung, wie dies geschieht. Wenn ich nur $1 oder \), als Ersatz benutze, funktioniert es gut, aber jedes Mal, wenn ich ein Literal nach der Rückreferenz einfüge, wird ein Zeilenumbruch dazwischen gesetzt. Ich weiß, dass ich danach mit einem anderen regulären Ausdruck umgehen kann, aber könnte mir jemand erklären, warum genau das passiert?

+1

Es ist wahrscheinlich '\ r', aber ich würde dies stattdessen empfehlen tun: (. *) ['^$ 'Ersetzen mit' ($ 1) , 'und stellen Sie sicher, dass' m' Modifizierer aktiviert ist (https://regex101.com/r/NmDw4r/1) – ctwheels

+1

Anstelle von '[^ \ n]' sollten Sie '.' verwenden, die nur mit einem anderen Zeichen als der Zeile übereinstimmen Bruchzeichen. Nur wenn Sie ein anderes Zeichen "ausschließen" müssen, können Sie etwas wie '[^ \ r \ n:]' verwenden (das entspricht jedem Zeichen außer CR, LF und ':') –

+0

Ahh, ich habe gerade herausgefunden, dass es das ist "Ich habe es verpasst, alberne mich. Danke für die Info. – StrikeAgainst

Antwort

2

Statt [^\n] (= beliebige Zeichen, sondern ein LF, Zeilenvorschub, \n) sollten Sie . verwenden, die nur alle Zeichen übereinstimmt andere als Zeilenumbruch Zeichen. Verwenden Sie die folgende regex eine nicht leere Linie entsprechen:

^.+$ 

Ersetzen durch \($0\), wo $0 Ersatz Rückreferenzierung (auch als Platzhalter) für das gesamte Spiel steht und die Klammern sind entkam (seit Klammern spezielle Metazeichen sind innerhalb von Boost-Ersatzmustern, um bedingte Ersatzmuster zu definieren).

Keine Notwendigkeit, die m Modifikator hier seit ^ und $ Anker zu verwenden, passen Beginn und Ende der Linie jeweils standardmäßig in Notepad ++.

Siehe die NPP S & R Einstellungen:

enter image description here