Comment remplacer toutes les chaînes par des numéros contenus dans chaque chaîne dans Notepad ++?

J’essaie de trouver toutes les valeurs avec le modèle suivant:

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

et remplacez-le par valeur à l’intérieur des scopes.

J’utilise la regex suivante pour trouver le motif:

 .*"\d+" 

Comment puis-je faire un remplacement?

Dans Notepad ++ pour remplacer, appuyez sur Ctrl + H pour ouvrir le menu Remplacer.

Ensuite, si vous cochez le bouton “Expression régulière” et que vous souhaitez, dans votre remplacement, utiliser une partie de votre modèle, vous devez utiliser les “groupes de capture” (en savoir plus sur Google ). Par exemple, supposons que vous vouliez correspondre à chacune des lignes suivantes

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

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

Donc, en utilisant:

Rechercher:. .*"(\d+)"

Remplacer: $1

Il vous rendra

 4 403 200 201 116 15 

S’il vous plaît noter qu’il existe de nombreux moyens alternatifs et meilleurs pour faire correspondre le modèle susmentionné. Par exemple, la value="([0-9]+)" du motif value="([0-9]+)" serait meilleure, car elle est plus spécifique et vous serez sûr qu’elle ne correspondra qu’à ces lignes. Il est même possible de faire le remplacement sans utiliser de groupes de capture, mais c’est un sujet légèrement plus avancé, donc je vais le laisser pour l’instant 🙂

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

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

Recherchez le motif: value = \ “([0-9] *) \” et remplacez par: \ 1 (tout ce que vous voulez faire autour de ce groupe de capture)

Ex. Surround avec crochets

[\ 1] -> produira value = “[4]”

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

Avec $1x$2

x est votre “valeur dans les scopes”.

J’ai Notepad ++ v6.8.8

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

Remplacer : [\ ‘\ 1 \’]

Produira: $ array [XYZ] => $ array [‘XYZ’]

Rechercher: value="([\d]+|[\d])"

Remplacer: \1

Ça va vraiment te rendre

4
403
200
201
116
15

js:

 a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"'; a = a.replace(/value="([\d]+|[\d])"/g, '$1'); console.log(a);