web-dev-qa-db-fra.com

Comment copier du texte marqué dans le bloc-notes ++

J'ai une partie du fichier source HTML qui contient des chaînes que je veux sélectionner et copier à la fois, à l'aide de la fonctionnalité regex de Notepad ++.

Voici une partie de la source de texte:

<option value="Performance"
>Performance</option>
<option value="Maintenance"
>Maintenance</option>
<option value="System Stability"
>System Stability</option>

J'utilise regex "[0-9a-zA-Z ]*" pour rechercher les valeurs "valeur". J'ai également sélectionné la fonctionnalité de recherche dans Notepad ++ pour mettre en surbrillance/marquer le texte trouvé. Cela fonctionne bien, je veux maintenant copier ou couper uniquement le texte en surbrillance dans le presse-papiers pour un traitement ultérieur. Mais je ne suis pas en mesure de trouver cette fonctionnalité dans Notepad ++. Est-ce tout simplement impossible ou suis-je trop bête?

49
Alex

Essayez ceci à la place:

Commencez par résoudre le problème de fin de ligne: (Notepad ++ n'autorise pas les expressions régulières multilignes)

Recherche [Mode étendu]:\r\n> (Ou les fins de ligne de votre propre système)

Remplacer:>

puis

Recherche [Mode Regex]:<option[^>]+value="([^"]+)"[^>]*>.* 

(si vous voulez toutes les occurrences de value plutôt que seulement les options, il suffit de supprimer la première option)

Remplacer:\1

Explication de la deuxième expression régulière: 

<option[^>]+     Find a < followed by "option" followed by 
                 at least one character which is not a >

value="          Find the string value="

([^"]+)          Find one or more characters which are not a " and save them
                 to group \1

"[^>]*>.*        Find a " followed by zero or more non-'>' characters
                 followed by a > followed by zero or more characters.

Oui, il analyse HTML avec une expression rationnelle - ces avertissements apply - vérifiez attentivement la sortie.

19
Sean Vieira

À partir de Notepad ++ 5.9, ils ont ajouté une fonction à «Supprimer les lignes non marquées», qui peut être utilisée pour supprimer tout ce que vous ne voulez pas, ainsi qu'une recherche et remplacer l'autre texte sur chaque ligne de valeur.

  1. Utilisez la fonctionnalité Rechercher -> Rechercher -> Marquer pour marquer chaque ligne que vous souhaitez conserver/copier et n'oubliez pas de cocher la case "Marque-page" avant de marquer le texte.
  2. Sélectionnez Rechercher -> Signet -> Supprimer les lignes non marquées
  3. Utilisez Rechercher -> Rechercher -> Remplacer pour remplacer le texte que vous ne souhaitez pas conserver/copier avec rien.
  4. Enregistrez le texte restant ou copiez-le.

Vous pouvez également faire la même chose en utilisant Rechercher -> Signet -> Copier les lignes marquées d'un signet

Donc techniquement, vous ne pouvez toujours pas copier le texte marqué, mais vous pouvez marquer des lignes avec du texte marqué, puis effectuer diverses opérations sur des lignes marquées ou non marquées.

88
Colin

J'ajoute ceci pour que ce soit complet, car cet article a un fort impact sur les résultats de recherche Google.

Vous pouvez réellement tout copier à partir d'une recherche regex, mais pas en une seule étape.

  1. Utilisez Marquer sous Rechercher et entrez l’expression rationnelle dans Rechercher quoi.
  2. Sélectionnez Ligne de signet et cliquez sur Marquer tout.
  3. Cliquez sur Rechercher -> Signet -> Copier les lignes marquées.
  4. Coller dans un nouveau document.
  5. Vous devrez peut-être supprimer du texte non désiré dans la ligne qui ne faisait pas partie de l'expression rationnelle avec une recherche et un remplacement.
22
gschoep

Ce serait une fonctionnalité intéressante à avoir dans Notepad ++. J'utilise la technique suivante pour extraire toutes les correspondances d'un fichier:

powershell
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]*" -AllMatches | % { $_.Matches } | select-object Value > output.txt

Et si vous souhaitez uniquement les correspondances distinctes dans une liste triée:

powershell
select-string -Path input.txt -Pattern "[0-9a-zA-Z ]" -AllMatches | % { $_.Matches } | select-object Value -unique | sort-object Value > output.txt
7
Fidel

Ceci est similaire à https://superuser.com/questions/477628/export-all-normal-expression-matches-in-textpad-or-notepad-as-a-list .

J'espère que vous essayez d'extraire:
"Performance"
"Entretien"
"Stabilité du système"

Voici la manière - Étape 1/3: Ouvrez Recherche -> Rechercher -> Remplacer l'onglet, sélectionnez le bouton radio Expression régulière. Entrez dans Rechercher quoi: (\ "[a-zA-Z0-9\s] + \") et dans Remplacer par:\n\1 et cliquez sur Remplacer tout le bouton .  Before Clicking Replace All

Etape 2/3: Après la première étape, vos mots-clés seront dans les lignes suivantes (comme indiqué dans l'image suivante) Maintenant, allez dans l'onglet Mark et entrez la même expression regex dans Find what: Field . Cochez la case Bookmark Line. Puis cliquez sur Marquer tout .  Bookmark the lines

Étape 3/3: Aller à la recherche -> Signets -> Supprimer les lignes non marquées.  Remove Unmarked lines

Donc, vous avez le résultat final ci-dessous  Final Result

7
Chetan

Non, à partir de Notepad ++ 5.6.2, cela ne semble pas être possible. Bien que la sélection de colonnes (Alt + Sélection) soit possible, les sélections multiples ne sont évidemment pas implémentées et donc également non prises en charge par la fonction de recherche.

2
AndiDog

J'ai eu le même problème. Vous pouvez répertorier les correspondances des expressions rationnelles dans un nouvel onglet, chaque correspondance figurant dans une nouvelle ligne dans PSPad Editor, qui est très similaire à Notepad ++.

Appuyez sur Ctrl + F pour rechercher, vérifiez l’expression rationnelle, mettez l’expression rationnelle et cliquez sur Liste.

0
Jancsik Zsolt

Ce n'est pas possible avec Notepad mais VOICI LA SOLUTION FACILE:

Vous aurez besoin du logiciel gratuit Expresso v3.1 http://www.ultrapico.com/ExpressoDownload.htm

J'ai eu recours à un autre logiciel libre: Expresso de Ultrapico. 

  1. Une fois installé allez dans l'onglet "Mode test". 
  2. Copiez votre REGEX dans le volet "Expressions régulières".
  3. Collez l'intégralité de votre texte à rechercher dans le volet "Exemple de texte" d'Expresso.

  4. Appuyez sur le bouton "Exécuter la correspondance". Cliquez avec le bouton droit de la souris sur "Volet Résultats de la recherche" et "Exporter vers ..." ou "Copier le texte correspondant dans le presse-papiers".

N.B .: L'auteur original est @Andreas Jansson mais il est masqué dans un commentaire. Par conséquent, cette page étant bien classée dans la recherche Google, je la laisse ici pour les autres.

0
Khado Mikhal