/ / No Notepad ++, como você substitui todas as instâncias de um determinado caractere após a Xth instance PER LINE? - regex, notepad ++

No Notepad ++, como você substitui todas as instâncias de um determinado caractere após a Xth instance PER LINE? - regex, notepad ++

Eu tenho um CSV Estou tentando formatar, mas os dados de entrada tem muitas vírgulas para começar. Seria muito mais fácil se eu pudesse simplesmente substituir todas as vírgulas em uma determinada linha (após o quarto) com um ponto e vírgula.

Existe alguma maneira de fazer isso usando uma regex simples de localizar / substituir ou a programação é necessária?

Respostas:

3 para resposta № 1

A maneira mais fácil (desde que os regexes do Notepad ++ não suportam asserções lookbehind de tamanho variável) para lidar com isso é provavelmente fazer em três etapas:

Primeiro, altere as primeiras quatro vírgulas para algo único:

^([^,]*),([^,]*),([^,]*),([^,]*),

e substitua por 1#COMMA#2#COMMA#3#COMMA#4#COMMA#.

Em seguida, substitua todas as vírgulas por ponto e vírgula.

Por último, substitua todos #COMMA#s com vírgulas.

Isso pressupõe que todas as linhas com vírgulas tenham pelo menos quatro delas.


1 para resposta № 2

Você deve ser capaz de fazer isso com um regex em localizar / substituir. Tente o seguinte no Notepad ++:

Find what:    ([^,]*),([^,]*),([^,]*),([^,]*),
Replace with: 1,2,3,4;

Não se esqueça de verificar o botão de rádio Regular Expression.