Disons que j'ai un texte comme celui-ci ci-dessous:
AC (nn) AC (nn) AC (nn) AC (nn) AC (nn) AC (nn) AC (nn) AC (nn) AC (nn) AC (nn) AC (nn)
Maintenant, je veux remplacer le nn
par des chiffres comme ça
AC (0) AC (1) AC (2) AC (3) CA (4) CA (5) AC (6) AC (7) AC (8) CA (9) CA (10)
J'avais l'habitude M-x replace-regexp nn RET \# RET
d'accomplir cela.
Des questions:
- Je veux commencer le numéro de remplacement à partir de
1
plutôt qu'à partir de0
. Ou plutôt commencer à partir d'un nombre spécifié, par exemple25
. Comment dois-je modifier la commande ci-dessus? - Comment remplacer
nn
par des chiffres comme001
,002
....998
,999
etc - je veux dire avec des zéros non significatifs
regular-expressions
replace
Prasanna
la source
la source
Réponses:
Technique générale
Votre chaîne de remplacement peut contenir du code lisp arbitraire. Dans la documentation de replace-regexp :
Nous pouvons utiliser cette technique de plusieurs façons.
Commençant par
1
Ce que nous voulons faire, c'est le remplacer
nn
par un de plus que celui quereplace-count
vous avez utilisé\#
.Appelez
#'replace-regexp
avec l'argument\,(1+ \#)
:C-M-% nn \,(1+ \#)
remplacera nn avec d'1
abord, puis2
,3
etc.À partir de
25
Vous pouvez le modifier non seulement en en ajoutant un, mais (dans votre exemple) 25:
C-M-% nn \,(+ 25 \#)
Zéros de tête
Ou nous pouvons utiliser
format
pour ajouter des zéros non significatifs. Cela remplacerann
avec000
,001
,002
, etc. Vous pouvez combiner autre code Lisp ci - dessus pour commencer à001
,025
ou tout ce que vous voulez.C-M-% nn \,(format "$03d" \#)
la source
Vous pouvez également utiliser
cua-mode
.Sélectionnez la région du rectangle (tous les nn) puis
M-x cua-rectangle-mark-mode
.Ensuite,
M-n
et acceptez les valeurs par défaut.la source