web-dev-qa-db-fra.com

Comment remplacer toutes les chaînes par les nombres contenus dans chaque chaîne dans Notepad ++?

J'essaie de trouver toutes les valeurs avec le motif suivant:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

et le remplacer par la valeur à l'intérieur des portées.

J'utilise la regex suivante pour trouver le motif:

.*"\d+"

Comment puis-je faire un remplacement?

97
Anton Selin

Dans le Bloc-notes ++ à remplacer, appuyez sur Ctrl+H pour ouvrir le menu Remplacer.

Ensuite, si vous cochez le bouton "Expression régulière" et que vous souhaitez utiliser dans votre remplacement une partie de votre modèle de correspondance, vous devez utiliser des "groupes de capture" (pour en savoir plus sur google ). Par exemple, supposons que vous souhaitiez faire correspondre chacune des lignes suivantes

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

en utilisant le modèle .*"\d+" et que vous souhaitez ne conserver que le nombre. Vous pouvez ensuite utiliser un groupe de capture dans votre modèle de correspondance, en utilisant les parenthèses ( et ), comme cela: .*"(\d+)". Alors maintenant, dans votre remplacement, vous pouvez simplement écrire $1, où $ 1 fait référence à la valeur du 1er groupe de capture et renverra le numéro pour chaque correspondance réussie. Si vous avez deux groupes de capture, par exemple, (.*)="(\d+)", $1 renverra la chaîne value et $2 renverra le nombre.

Donc en utilisant:

Trouver: .*"(\d+)"

Remplacer: $1

Il te rendra

4
403
200
201
116
15

Veuillez noter qu’il existe de nombreux moyens alternatifs et meilleurs d’appariement du modèle susmentionné. Par exemple, le modèle value="([0-9]+)" serait préférable, car il est plus spécifique et vous serez sûr qu'il ne correspondra qu'à ces lignes. Il est même possible de faire le remplacement sans utiliser de groupes de capture, mais ceci est un sujet légèrement plus avancé, donc je le laisse pour le moment :)

177
psxls

psxls a donné une excellente réponse, mais je pense que ma version du Notepad ++ est légèrement différente et que la capture de $ (dollar) ne fonctionne pas.

J'ai Notepad ++ v.5.9. et voici comment vous pouvez accomplir votre tâche:

Recherchez le modèle: valeur =\"([0-9] *) \" et remplacez-le par: \ 1 (quoi que vous souhaitiez faire autour de ce groupe de capture)

Ex. Surround avec crochets

[\ 1] -> produira value = "[4]"

14
dchayka

Remplacez (.*")\d+(")

Avec $1x$2

x est votre "valeur à l'intérieur des portées".

6
marsze

J'ai Notepad ++ v6.8.8

Trouver: [([a-zA-Z])]

Remplacer: [\ '\ 1 \']

Produira: $ array [XYZ] => $ array ['XYZ']

0
Juan Tapiador