3

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

Доказательство того, что это должно работать: 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++ ScreenShot

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

2 ответа2

4

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

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

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

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

0

В настоящее время труба | символ не будет поддерживаться в блокноте ++.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .