Notepad++-Ersetzen funktioniert nicht für reguläre Ausdrücke

Notepad++-Ersetzen funktioniert nicht für reguläre Ausdrücke

BEARBEITEN

Beweis, dass es funktionieren sollte:http://regexr.com?30pf2


Ich versuche, alle Vorkommen von, die nicht in Anführungszeichen stehenmit einem~

20,72275,Epidurography,1
21,72285,X-Ray C/T Spine Disk,1
22,72291,"Perc Vert/Sacroplasty, Fluor",1
23,72292,"Perc Vert/Sacroplasty, Ct",1

Wird

20~72275~Epidurography~1
21~72285~X-Ray C/T Spine Disk~1
22~72291~"Perc Vert/Sacroplasty, Fluor"~1
23~72292~"Perc Vert/Sacroplasty, Ct"~1

Mein regulärer Ausdruck funktioniert einwandfrei, aber ich kann die gefundenen Werte nicht ersetzen. Notepad++ hebt das zu ersetzende Komma hervor, übergeht es aber, ohne Änderungen vorzunehmen, wenn ich auf dasErsetzenTaste.

Finde was:(,)(?=(?:[^"]|"[^"]*")*$)

Ersetzen mit:~

Ich habe andere Werte ausprobiert, weil ich dachte, ~sie seien irgendwie reserviert, aber alle anderen Zeichen oder Zeichenkombinationen scheinen auch nicht zu funktionieren. Hoffentlich ist das nur das Ergebnis eines Versehens meinerseits. Für jede Hilfe wäre ich dankbar.

Ich verwende Notepad++ v6.1.1

Danke! NotePad++ Screenshot

Regex vonhttps://stackoverflow.com/questions/632475/regex-to-pick-commas-outside-of-quotes

Antwort1

Dies liegt an einem Fehler in der RegEx-Engine von Notepad++ (Fehlerbericht).

Bei Verwendung von Lookaround-Assertionen mit Nullbreite klicken Sie aufErsetzenhat einfach keine Wirkung!

Beispielsweise zeigt das Ersetzen T(?=E)durch Bdasselbe Verhalten, wenn es auf die Zeichenfolge angewendet wird TEST.

Klicken Sie aufAlles ersetzendient als Workaround, bis das Problem behoben ist.

Antwort2

Derzeit wird das Pipe |-Symbol in Notepad++ nicht unterstützt.

Die neueste Version Notepad 10.1.1unterstützt |RegEx

verwandte Informationen