Regex: Existe um caractere para aumentar dígitos no PCRE?

0

Estou usando um programa de renomeação de arquivos compatível com PCRE. Existe um caractere ou padrão que eu possa digitar no campo "replace" do programa para dizer que ele deve anexar números no final dos nomes dos arquivos e que eles devem estar aumentando para cada novo arquivo?

Aqui está um exemplo que eu fiz em tempo real.

doc1 - Kopia (2) - Kopia.txt
doc1 - Kopia (2) - Kopia_2.txt
doc1 - Kopia (2).txt
doc1 - Kopia (2)_2.txt
doc1 - Kopia (3).txt
doc1 - Kopia (3)_2.txt
doc1 - Kopia - Kopia (2).txt
doc1 - Kopia - Kopia (2)_2.txt
doc1 - Kopia - Kopia - Kopia.txt
doc1 - Kopia - Kopia - Kopia_2.txt
doc1 - Kopia - Kopia.txt
doc1 - Kopia - Kopia_2.txt
doc1 - Kopia.txt
doc1 - Kopia_2.txt
doc1.txt
doc1_2.txt

Eu quero manter "doc" no começo e quero manter a extensão do nome do arquivo. O programa tem uma marca de seleção que ativa ou desativa o processamento de extensões. Então, se eu deixar isso desmarcado, eu não deveria ter que me preocupar com isso. Quero que o número após "doc" aumente para cada arquivo, já que não posso ter vários arquivos com o mesmo nome na mesma pasta.

Então é com isso que deve acabar.

doc1.txt
doc2.txt
doc3.txt
etc... you get the idea

Eu só uso .* como o padrão "correspondência". E eu acho que o padrão "substituir" deve ser algo como doc{n} , mas o que devo digitar no lugar de {n} Não tenho idéia. Existe algum padrão simples como esse, que eu possa usar aqui?

    
por Samir 23.06.2013 / 14:56

1 resposta

1

Não, não há uma construção de expressão regular para isso. Expressões regulares fazem uma coisa: elas combinam padrões e permitem que você se refira a padrões capturados. O que você está pedindo exigiria incrementar uma variável e assim entraria no reino das linguagens de programação. Tal recurso está além do escopo das expressões regulares.

Se o seu programa oferecer suporte à avaliação de código arbitrário como parte de sua correspondência, algo como s/foo/1+2/ para substituir foo por 3 você poderá fazer isso, mas não é um recurso de expressões regulares.

    
por 23.06.2013 / 15:01