Замена в Notepad++ не работает для регулярных выражений

Замена в Notepad++ не работает для регулярных выражений

РЕДАКТИРОВАТЬ

Доказательство того, что это должно работать:http://regexr.com?30pf2


Я пытаюсь заменить все вхождения, которые не заключены в кавычкис~

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

Становится

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

Мой Regex работает как по маслу, но я не могу заменить значения, которые он находит. Notepad++ выделяет запятую, которую нужно заменить, но проходит мимо, не внося никаких изменений, когда я нажимаюЗаменятькнопка.

Найти то, что:(,)(?=(?:[^"]|"[^"]*")*$)

Заменить:~

Я пробовал другие значения, думая, что ~это как-то зарезервировано, но все остальные символы или комбинации символов, похоже, тоже не работают. Надеюсь, это просто результат какой-то оплошности с моей стороны. Любая помощь будет оценена по достоинству.

Я использую Notepad++ v6.1.1

Спасибо! Скриншот NotePad++

Регулярное выражение изhttps://stackoverflow.com/questions/632475/regex-to-pick-commas-outside-of-quotes

решение1

Это связано с ошибкой в ​​движке RegEx Notepad++ (отчет об ошибке).

При использовании утверждений обхода нулевой ширины нажатиеЗаменятьпросто не имеет никакого эффекта!

Например, замена T(?=E)на Bдемонстрирует то же поведение при использовании в строке TEST.

ЩелчокЗаменить всеслужит обходным решением, пока эта проблема не будет исправлена.

решение2

В настоящее время символ вертикальной черты |не поддерживается в Notepad++.

Последняя версия Notepad 10.1.1поддерживает |RegEx

Связанный контент