Utilisation de la recherche / remplacement de caractères génériques dans Notepad ++

17

Voici mon problème: dans un fichier .txt, j'ai besoin de trouver et de remplacer des milliers d'instances de syntaxe comme ceci:

(voir (a053007djfgspwdf))

ou

(voir (a053007djfgspwdf) et (a54134xsedgeg))

ou

(voir (a053007djfgspwdf), (a9554xsdfgsdfg) et (a54134xsedgeg))

Il existe une grande variété entre les chaînes de texte de début (voir (a et la fin )) . Cela peut-il être configuré dans Notepad ++ en utilisant regex? Si oui, comment ferais-je cela? Merci!

Michael Tuck
la source

Réponses:

17

Désolé, je trouve que les autres réponses sont compliquées. (Aucun manque de respect destiné aux affiches originales.)

Comme cela apparaît toujours comme premier résultat de recherche, je vais ajouter ceci:

  1. Ouvrez la boîte de dialogue de recherche / remplacement ( CTRL+ Fpuis l'onglet de remplacement)
  2. Cochez "Expression régulière" en bas
  3. Utilisez. * Comme caractère générique

Par exemple, je voulais supprimer toutes les instances de abp = "1314", abp = "1313", abp = "1312" etc.

Dans la boîte de dialogue de remplacement:

Trouvez dans quoi: abp=".*"
Remplacez par:

(Vous remplacez quoi que ce soit dans ces citations par rien pour vous en débarrasser)

Source: https://www.organicweb.com.au/17226/general-technology/notepad-wildcard/

SweetSuzie
la source
15

Oui il peut! Notepad ++ dispose d'un mode de recherche RegEx que vous pouvez sélectionner pour tous vos besoins de remplacement RegEx.

L'exemple ci-dessous est un remplacement de base pour n'importe quoi entre, (see (a...))à l'exception d'un saut de ligne. Vous devrez peut-être modifier le RegEx ou écrire le vôtre pour l'adapter à vos besoins. Voici un excellent endroit pour vous aider à expérimenter.

RegEx: \(see \(a.+\)\)

Cordes assorties:

(see (a053007djfgspwdf))
(see (a053007djfgspwdf) and (a54134xsedgeg))
(see (a053007djfgspwdf), (a9554xsdfgsdfg) and (a54134xsedgeg))


Remplacer (voir (a ...)) par remplacement

une fois
la source
Merci! Il a trouvé les instances du premier exemple (voir (a053007djfgspwdf)) mais pas les autres. Pourtant, un bon début. Je vais jouer avec pour voir ce que je peux faire d'autre. Si vous avez d'autres suggestions, je vous en serais très reconnaissant. Merci encore.
Michael Tuck
Avez-vous cliqué sur Remplacer tout ou avez-vous continué à cliquer sur Remplacer pour parcourir les correspondances similaires à l'utilisation de Rechercher suivant ? Le texte que vous recherchez commence-t-il (see (aet se termine- ))t-il seulement? Si vous avez des chaînes qui se terminent par une seule parenthèse, vous pouvez transformer la dernière \)en groupe de capture (\)|)pour faire correspondre les chaînes se terminant par ))"ou" ).
one.time
J'ai essayé quelques remplacements, puis Remplacer tout. Après cela, la chaîne de recherche n'a rien trouvé. Le texte pour tous est: (voir un texte varié )) Pas de chaînes avec une seule parenthèse sauf peut-être des fautes de frappe.
Michael Tuck
J'ai mis à jour ma réponse avec un RegEx alternatif (\(see \(a|\(a)([^\)]+)\)(\)|)qui correspondra aux chaînes de votre question.
one.time
LOL, vous avez mis à jour votre réponse pendant que je modifiais ma réponse. Je vais essayer le nouveau.
Michael Tuck
1

Essayez ce modèle: \(see \(a(.*)\)et assurez-vous que la case ". Matches newline" n'est pas cochée et que "boucler" est coché.

ethmz
la source
1

Comme certaines d'entre elles étaient trop approfondies pour que je puisse les comprendre, permettez-moi de vous montrer ce que j'ai fait après avoir lu toutes ces solutions et plus encore pour enfin mieux comprendre. (c'est une approche simple, peut-être pas la meilleure)

Je voulais supprimer tous mes éléments de figure sur toute la page Web. Figure 2.1, figure 1.1, ect.

C'était:

<p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar<br><b>Figure 2.1</b></p>

Je voulais que ça finisse:

 <p class="td1-content b8"><span class="stepNumber">2.  </span>Select Memo from the toolbar</p>

Mais chacun

avait un numéro de figure différent, donc je l'ai utilisé dans un texte sublime 2.

  1. ctrl H
  2. cliquez sur le symbole ". *" en bas à droite du texte sublime 2, (regex)
  3. tapé <br><b>Figure.*</b>
  4. remplacer par: -branche gauche

Cela a remplacé toutes mes instances par des chiffres. remarquez que j'ai utilisé. * où les chiffres auraient été. J'espère que cela t'aides.

Jim Schwetz
la source
0

Le regex exact dont vous auriez besoin est:

\(see \(\w+\)((, \(\w+\))*( and \(\w+\)))?\)

Par exemple:

entrez la description de l'image ici

En sélectionnant Rechercher tout dans le document actuel , le résultat serait:

entrez la description de l'image ici

Vous pouvez simplement utiliser Remplacer selon votre nécessité à la place.

Si vous souhaitez également inclure le adans l'expression régulière, vous pouvez utiliser:

\(see \(a\w+\)((, \(a\w+\))*( and \(a\w+\)))?\)
Roney Michael
la source