Em resposta a:
12345678 TXT 19700101 0 100 20160624 100 Comment text 12345678 TXT 19700101 100 100,25 20160624 0,25 Comment text 12345678 TXT 19700101 100,25 100,5 20160624 0,25 Comment text
Para a 4ª coluna: ^((?:\S+\s+){3}\d+)(\s)
to ,0
de ^((?:\S+\s+){3}\d+,\d)(\s)
to
Para a 5ª / 7ª coluna:
semelhante ao acima, basta substituir {3}
por {4}
/ {6}
na regra, respectivamente
O 1ª regra acrescenta ,0
aos números sem ,
. Agora todos os números devem ter ,\d
.
O Segunda regra acrescenta um 0
àqueles com um único dígito após a vírgula.
Quanto ao (?:)
: grupo sem captura , as colunas anteriores já foram capturadas como , portanto, a captura adicional é desnecessário.
Isso só preenche o número com duas casas decimais. Para preencher um valor arbitrário, use a abordagem pad excessively, then trim
.
Palavra final?
Na minha opinião, o regex simples como no notepad ++ é inadequado para esta tarefa. Alguns scripts básicos, como bash ou perl, teriam lidado com isso com uma legibilidade muito maior.