A substituição do Notepad ++ não funciona para expressões regulares

A substituição do Notepad ++ não funciona para expressões regulares

EDITAR

Prova de que deveria funcionar:http://regexr.com?30pf2


Estou tentando substituir todas as ocorrências de, que não estão entre aspascom um~

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

Torna-se

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

Meu Regex funciona perfeitamente, mas não consigo substituir os valores que ele encontra. O Notepad++ destaca a vírgula a ser substituída, mas passa sem fazer nenhuma alteração quando clico no botãoSubstituirbotão.

Encontre o que:(,)(?=(?:[^"]|"[^"]*")*$)

Substituir com:~

Eu tentei outros valores pensando que ~eram de alguma forma reservados, mas todos os outros caracteres ou combinações de caracteres também não parecem funcionar. Espero que isso seja apenas o resultado de algum descuido da minha parte. Qualquer ajuda seria apreciada.

Estou usando o Notepad++ v6.1.1

Obrigado! Captura de tela do NotePad ++

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

Responder1

Isso se deve a um bug no mecanismo RegEx do Notepad++ (relatório de erro).

Ao usar asserções lookaround de largura zero, clicar emSubstituirsimplesmente não tem efeito!

Por exemplo, substituir T(?=E)por Bexibe o mesmo comportamento quando usado na string TEST.

ClicandoSubstitua tudoserve como uma solução alternativa até que isso seja corrigido.

Responder2

Atualmente |o símbolo de pipe não é compatível com o notepad ++.

A versão mais recente Notepad 10.1.1suporta |RegEx

informação relacionada