42 votes

Exporter toutes les correspondances d'expressions régulières dans Textpad ou Notepad++ sous forme de liste

Dans Textpad ou Notepad++, y a-t-il une option pour exporter toutes les correspondances trouvées pour une recherche d'expression régulière, sous forme de liste unique ?

Dans un grand fichier texte, je recherche des balises (mots entre % %), en utilisant l'expression régulière suivante %\< et \>%, et je veux toutes les correspondances sous forme de liste unique, afin de pouvoir supprimer les doublons à l'aide d'Excel et obtenir une liste de balises uniques.

77voto

Ankit Points 4538

Vous pouvez y parvenir en utilisant les rétro-références et la fonctionnalité Trouver et Marquer dans Notepad++.

  1. Trouvez les correspondances en utilisant regex (par exemple %(.*?)%) et remplacez-les par \n%\1%\n, après cela nous aurons notre mot cible sur des lignes séparées (c'est-à-dire qu'aucune ligne n'aura plus d'un mot correspondant).

  2. Utilisez la fonctionnalité Recherche-->Trouver-->Marquer pour marquer chaque ligne avec regex %(.*?)% et n'oubliez pas de cocher 'Marquer la ligne' avant de marquer le texte

  3. Sélectionnez Recherche-->Marquer-->Supprimer les lignes non marquées

  4. Enregistrez le texte restant. C'est la liste requise.

9voto

Scott Points 20468

Est-ce faire cela dans Notepad++ une exigence obligatoire? Êtes-vous sur Windows ou une forme de Unix? Si vous êtes sur Windows, vous pouvez le faire (partiellement) depuis l'invite de commande :

findstr /r "%\[a-z\].\*\[a-z\]% %\[a-z\]%" _votre\_fichier_ > _nouveau\_fichier_

findstr est vaguement inspiré par grep, donc ce nouveau_fichier contiendra toutes les lignes correspondant à vos critères de recherche ; vous pouvez ensuite utiliser Notepad++ pour supprimer le texte indésirable (à gauche du premier % et à droite du deuxième).


Et bien sûr, si vous êtes sur Unix, vous pouvez effectuer la tâche équivalente avec sed. Et si vous avez GNU grep (c'est-à-dire, si vous êtes sur Linux), vous pouvez le faire avec grep -o.

4voto

Greck Points 261

Il existe un plugin Notepad++ qui peut copier une expression regex correspondante dans un nouveau fichier dans un nouvel onglet. RegexExtract

Parce que je n'ai trouvé aucun plugin pour Notepad++ qui puisse extraire du texte du document actuel ou de tous les fichiers d'un emplacement avec quelques paramètres supplémentaires (comme la conversion de cas), j'ai décidé d'essayer de le faire moi-même. (...) L'interface du plugin est assez simple (...). (...) Les champs "Trouver", "Remplacer" et "Masque" utilisent la syntaxe regex C++11. L'extraction à partir de fichiers fonctionne actuellement uniquement pour ceux en UTF8.

Modifier Saisie de dialogue adaptée à la question

entrer la description de l'image ici

Sur l'image, vous pouvez voir comment remplir le dialogue. Je suppose qu'un mot ne contient pas d'espaces, etc., uniquement des caractères correspondant à \w. Notamment :

  • Utilisez une paire de crochets pour permettre de sélectionner le mot, sans les caractères de pourcentage.
  • Choisissez l'option Extraire avec remplacement pour sélectionner la première correspondance. Sinon, vous obtiendrez une sortie en colonne de tous les $1, $2, etc.
  • Cochez Sauter $& ... pour exclure les correspondances complètes.
  • Cochez Filtrer unique pour signaler chaque correspondance une seule fois.
  • Cliquez sur Extraire pour obtenir les résultats. (Rechercher ne fait que trouver les correspondances, mais ne signale pas).

2voto

daveloyall Points 167

Dans TextPad, vous ouvrez la boîte de dialogue Rechercher comme d'habitude, puis utilisez le bouton Tout marquer.

Ensuite, utilisez la fonction Copier les lignes marquées. (Menu Édition > Autre Copier > Lignes marquées.)

0voto

Si quelqu'un est intéressé par une solution en ligne à la place (étant donné que le plugin notepad++ ne fonctionne pas sur 64 bits), vous pouvez essayer Molbiotools. Il peut extraire votre regex complètement, avec ou sans lignes supplémentaires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X