Digamos que tenho um texto como este abaixo:
CA (nn) CA (nn) CA (nn) CA (nn) CA (nn) CA (nn) CA (nn) CA (nn) CA (nn) CA (nn) CA (nn)
Agora eu quero substituir os nn
números por assim
CA (0) CA (1) CA (2) CA (3) CA (4) CA (5) CA (6) CA (7) CA (8) CA (9) CA (10)
Eu costumava M-x replace-regexp nn RET \# RET
fazer isso.
Questões:
- Desejo iniciar o número de substituição para começar em
1
vez de0
. Ou melhor, comece com um número especificado, digamos25
. Como devo modificar o comando acima? - Como substituir
nn
por dígitos como001
,002
....998
,999
etc - quero dizer com zeros à esquerda
regular-expressions
replace
Prasanna
fonte
fonte
Respostas:
Técnica geral
Sua string de substituição pode conter código arbitrário de Lisp. Na documentação para replace-regexp :
Podemos usar essa técnica de várias maneiras.
Começando de
1
O que queremos fazer é substituir
nn
por um a mais do quereplace-count
você costumava usar\#
.Ligue
#'replace-regexp
com o argumento\,(1+ \#)
:C-M-% nn \,(1+ \#)
irá substituir nn com1
primeiro, então2
,3
etc.Começando às
25
Você pode modificar isso não apenas adicionando um, mas (no seu exemplo) 25:
C-M-% nn \,(+ 25 \#)
Zeros à esquerda
Ou podemos usar
format
para adicionar zeros à esquerda. Isso irá substituirnn
com000
,001
,002
, etc. Você pode combinar outro código lisp para iniciar a001
,025
ou o que quiser.C-M-% nn \,(format "$03d" \#)
fonte
Você também pode usar
cua-mode
.Selecione a região do retângulo (todo o nn) e depois
M-x cua-rectangle-mark-mode
.Em seguida,
M-n
e aceite os valores padrão.fonte