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.