10 votes

Remplacer chaque nième occurrence d'un caractère par une nouvelle ligne dans Notepad++.

J'ai une chaîne de caractères délimitée par un pipe NAME|VALUE Les paires ressemblent à quelque chose comme ça

Name1|Value1|Name2|Value2|Name3|Value3

Ce que je veux faire, c'est remplacer une fois sur deux les instances de | avec une nouvelle ligne de sorte que j'ai quelque chose comme ceci

Name1|Value1
Name2|Value2
Name3|Value3

Mon problème n'est pas la nouvelle ligne, car je sais que je peux utiliser \r\n pour cela, mais plutôt la partie regex qui ne remplace qu'une fois sur deux les occurrences de | .

12voto

Máté Juhász Points 20291

Trouvez : ([^\|]*\|[^\|]*)\|
Remplacer à : \1\n

3voto

DavidPostill Points 140654

Je veux remplacer chaque deuxième instance de | par une nouvelle ligne

  • Menu "Recherche" > "Remplacer" (ou Ctrl + H )

  • Définissez "Trouver quoi" sur (.*?\|.*?)[\|]

  • Réglez "Remplacer par" sur \1\r\n

  • Activez "Expression régulière".

  • Cliquez sur "Remplacer tout".

    enter image description here

Avant :

Name1|Value1|Name2|Value2|Name3|Value3

Après :

Name1|Value1
Name2|Value2
Name3|Value3

Notes :

  • Ce qui précède suppose que vous éditez un fichier texte avec les EOL de Windows, \r\n .

  • Si vous utilisez des fichiers avec des EOL différents, vous pouvez les convertir en EOL Windows en utilisant le menu "Edition" > "Conversion EOL".

  • Si vous ne travaillez pas avec Windows EOL, et que vous ne souhaitez pas les convertir, utilisez plutôt ce qui suit :

    • Utilisez \n au lieu de \r\n pour les EOL d'Unix/OS X

    • Utilisez \r au lieu de \r\n pour Mac OS (jusqu'à la version 9) EOLs


Autres lectures

0voto

ZygD Points 2341

Ce document tente de montrer comment remplacer chaque Nth avec une nouvelle ligne sans copier-coller des parties de la séquence. Dans ce cas, un nombre est nécessaire pour indiquer au moteur combien de répétitions sont attendues. Dans cet exemple, je veux remplacer chaque 13ème occurrence du caractère @ avec un saut de ligne. Vous pouvez voir 12 (13-1) répétitions du groupe de non-capture plus le texte restant avant le 13ème caractère @ dans un groupe capturé. Ensuite, il y a le 13ème personnage apparié, mais non capturé. @ qui sera remplacé par \r\n .

Trouvez quoi : ((?:.*?\@){12}.*?)\@
Remplacer par : $1\r\n
Vérifiez Enveloppe
Mode de recherche \= Expression régulière
Remplacer tout

Le personnage @ doit être remplacé par le caractère de votre séparateur actuel (il est répété deux fois dans le motif). Par exemple, si votre séparateur est | votre modèle serait ((?:.*?\|){12}.*?)\|
De même, le nombre 12 doit être remplacé par votre valeur (N-1).

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