Bonjour à tous,
Je suis en train de faire des modifs sur de nombreux fichiers et j'ai une substitution à faire (j'utilise sed).
Elle consiste à trouver tout les string <blabla>enum. et de les remplacer par <blabla>inter_enum. en excluant les strings <blabla>_enum.
J'ai essayé ce regex avec un simulateur de regex:
qui fonctionne, mais lorsque je le met dans mon sed:
sed -i "s+(?!_)enum\.+iter_enum\.+g" <file>
ça ne fonctionne plus.... Je ne sais pas si c'est ça, mais j'utilise une version de sed qui est relativement datée:
1 2 3
| sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc. |
et j'ai cru comprendre en cherchant à droite à gauche que ça pouvait venir du fait que (?!_) n'était pas implémenté sur les anciennes regex...
ce truc va me rendre dingue
si vous avez des idées, vous m'éviterez peut-être l'asile
edit: j'ai également essayé
sed -i "s+[^_]enum\.+iter_enum\.+g" <file>
mais il transforme (par ex)
while (enum.hasMoreElements()) {
en
while inter_enum.hasMoreElements()) {
(i.e. il me vire le caractère précédent ce qui est gênant lorsqu'il s'agit d'une parenthèse ou d'un espace non suprimable)
Partager