Rechercher CRLF dans Notepad ++


316

Comment puis-je trouver / remplacer tous les caractères CR / LF dans Notepad ++?

Je recherche quelque chose d'équivalent au caractère spécial ^ p dans Microsoft Word.


Juste pour construire un peu sur ce que «thenonhacker» mentionnait. Nous utilisons ULtraEdit-32 au travail et, en travaillant avec des fichiers EDI (x.12), nous devons souvent encapsuler ou décompresser des données. Les 2 chaînes de recherche et de remplacement les plus courantes sont "^ p" & "~". aller dans un sens remplacera le "~" par un CR / LF pour une lecture plus facile de chaque segment. Aller dans l'autre sens remet le fichier dans le format dont le traducteur EDI a besoin. Pour les gens paresseux comme moi, je n'ai que ces clés mappées pour une utilisation facile.
DavidGrove

1
Bien que non lié, mais utile. J'ai visité cette page après avoir recherché une méthode pour convertir un fichier texte UNIX au format Windows dans Windows. C'est ce que j'ai fait et travaillé CTRL+H, sélectionnez "Mode de recherche: Expression régulière". "Rechercher quoi: $" et "Remplacer par: \ r". Copiez collez le contenu dans le Bloc-notes ou enregistrez-le sur le disque.
Guru

2
Yay! Notepad ++ 6.0 apporte le support de PCRE: regex comme [\r\n]+maintenant fonctionne. J'ai mis à jour ma réponse et je célébrerai!
VonC

@VonC: Je suppose que je dois également mettre à jour toutes mes réponses [bloc-notes ++] :)
BoltClock

Réponses:


412

[\r\n]+ devrait aussi fonctionner

Mise à jour du 26 mars 2012, date de sortie de Notepad ++ 6.0 :

OMG, cela fonctionne vraiment maintenant !!!

Expression PCRE dans Notepad ++


Réponse originale 2008 (Bloc-notes ++ 4.x) - 2009-2010-2011 (Bloc-notes ++ 5.x)

En fait non, cela ne semble pas fonctionner avec regexp ...

Mais si vous avez Notepad ++ 5.x, vous pouvez utiliser le mode de recherche « étendu » et rechercher \r\n. Cela trouve tout votre CRLF.

(Je me rends compte que c'est la même réponse que les autres, mais encore une fois, le «mode étendu» n'est disponible qu'avec Notepad ++ 4.9, 5.x et plus)


Depuis avril 2009, vous avez un article wiki sur le site Notepad ++ sur ce sujet:
" Comment remplacer les fins de ligne, modifiant ainsi la disposition des lignes ".
(mentionné par georgiecasey dans sa réponse ci-dessous )

Certains extraits pertinents incluent les processus de recherche suivants:

Recherche simple ( Ctrl+ F), Mode de recherche =Normal

Vous pouvez sélectionner un EOLdans la fenêtre d'édition.

  • Déplacez simplement le curseur à la fin de la ligne et tapez Shift+ RightFlèche.
  • ou, pour sélectionner EOLavec la souris, commencez juste à la fin de la ligne et faites glisser jusqu'au début de la ligne suivante; faire glisser vers la droite du EOLne fonctionnera pas. Vous pouvez copier EOLet coller manuellement le dans le champ des fichiers Unix ( LF-seulement).

Recherche simple (Ctrl + F), mode de recherche = étendu

L'option "Extended" affiche \net \rsous forme de caractères pouvant être mis en correspondance.
Comme avec le mode de recherche Normal, Notepad ++ recherche le caractère exact.
La recherche \rdans un fichier au format UNIX ne trouvera rien, mais la recherche de \nvolonté. De même, un fichier au format Macintosh contiendra \rmais pas \n.

Recherche simple (Ctrl + F), Mode de recherche = Expression régulière

Les expressions régulières utilisent les caractères ^et $pour ancrer la chaîne de correspondance au début ou à la fin de la ligne. Par exemple, la recherche de return;$trouvera des occurrences de «retour»; qui se produisent sans texte suivant sur cette même ligne. Les caractères d'ancrage fonctionnent de manière identique dans tous les formats de fichiers.
Le '.' le métacaractère dot ne correspond pas aux fins de ligne.

[Testé dans Notepad ++ 5.8.5]: une recherche d'expression régulière avec un explicite \rou \nne fonctionne pas (contrairement à la documentation Scintilla ) .
Ni une recherche sur un LF explicite (collé), ni sur les caractères EOL (invisibles) placés dans le champ lorsqu'un EOL est sélectionné. Recherche avancée ( Ctrl+ R) sans regexp

Ctrl+ Minsérera quelque chose qui correspond aux sauts de ligne. Ils seront remplacés par la chaîne de remplacement.
Je recommande cette méthode comme la plus fiable, à moins que vous n'ayez vraiment besoin d'utiliser regex.
Par exemple, pour supprimer tous les deuxièmes retours à la ligne dans un fichier à double interligne, entrez Ctrl+ Mdeux fois dans la zone de chaîne de recherche et une fois dans la zone de chaîne de remplacement.

Recherche avancée ( Ctrl+ R) avec Regexp.

Ni Ctrl+ M, $ni \r\nne correspondent.


Le même wiki mentionne également l' alternative à l'éditeur Hex :

  • Tapez la nouvelle chaîne au début du document.
  • Sélectionnez ensuite pour afficher le document en mode Hex .
  • Sélectionnez l'une des nouvelles lignes et appuyez sur Ctrl+ H.
  • Pendant que la boîte de dialogue Remplacer s'affiche, sélectionnez en arrière-plan la nouvelle chaîne de remplacement et Ctrl+ Ccopiez-la pour la coller dans l'entrée Remplacer par du texte.
  • Ensuite, remplacez ou remplacez tout comme vous le souhaitez.

Remarque: le caractère sélectionné pour la nouvelle ligne apparaît généralement sous la forme 0a.
Il peut avoir une valeur différente si le fichier est au format Windows. Dans ce cas, vous pouvez toujours aller à Edit -> EOL Conversion -> Convert to Unix Format, et après le remplacement, remettez-le et Edit -> EOL Conversion -> Convert to Windows Format.


1
J'utilisais la version 4.7. La mise à niveau vers la dernière version et le mode étendu fonctionne comme annoncé. Merci à tous ceux qui ont répondu.
polara

+1: J'utilisais la version 4.6 et j'ai eu un problème similaire. Et grâce à votre réponse, je suis passé à 5+. Merci!
paercebal

Ça marche! Mais cela fait craquer Notepad ++ RegExp. UltraEdit-32 est plus intelligent, vous avez juste besoin \ n et vous avez terminé votre travail ...
thenonhacker

\ r \ n a fonctionné pour moi, mais pas \ n, ce qui est contre-intuitif si vous êtes un développeur habitué à \ n être un raccourci pour \ r \ n.
Warren P

2
@GarretWilson Je confirme que ça [^\r]\nmarche très bien (recherche d' expressions
régulières

22

Il semble que ce soit une FAQ , et la résolution proposée est:

Recherche simple (Ctrl + H) sans regexp

Vous pouvez activer Afficher / Afficher la fin de la ligne ou Afficher / Afficher tout et sélectionner les caractères de nouvelle ligne désormais visibles. Ensuite, lorsque vous lancez la commande, certains caractères correspondant au caractère de nouvelle ligne seront collés dans le champ de recherche. Les correspondances seront remplacées par la chaîne de remplacement, contrairement au mode regex.

Remarque 1: si vous les sélectionnez avec la souris, commencez juste avant eux et faites-les glisser au début de la ligne suivante. Faire glisser jusqu'à la fin de la ligne ne fonctionnera pas.

Remarque 2: vous ne pouvez pas les copier et les coller vous-même dans le champ.

Recherche avancée (Ctrl + R) sans regexp

Ctrl + M insérera quelque chose qui correspond aux retours à la ligne. Ils seront remplacés par la chaîne de remplacement.


2
Vous pouvez également utiliser Ctrl + M pour insérer des sauts de ligne dans la chaîne de remplacement.
Dusty Campbell

2
C'est une FAQ car c'est un peu une verrue de conception dans un produit par ailleurs brillant.
Warren P

11

Dans la boîte de dialogue Remplacer, vous souhaitez définir le mode de recherche sur "Etendu". Les modes d'expression normale ou régulière ne fonctionneront pas.

Ensuite, recherchez simplement "\ r \ n" (ou simplement \ n pour les fichiers Unix ou simplement \ r pour les fichiers au format mac), et définissez le remplacement sur ce que vous voulez.


Cette réponse était obsolète une fois écrite - Mac n'utilise plus \rdepuis 2001 ... (c'est maintenant Unix)
Jasper

9

Je n'ai pas eu beaucoup de chance avec les expressions régulières \ r \ n dans la fenêtre de recherche / remplacement.

Cependant, cela fonctionne dans Notepad ++ v4.1.2:

  1. Utilisez le menu "Affichage | Afficher la fin de ligne" pour activer l'affichage des caractères de fin de ligne. (Les sauts de ligne de retour de chariot doivent apparaître sous la forme d'un seul caractère CRLF ombré.)

  2. Sélectionnez l'un des «caractères» CRLF (placez le curseur juste devant l'un, maintenez la touche MAJ enfoncée, puis appuyez une fois sur la touche CURSEUR DROIT).

  3. Copiez le caractère CRLF dans le presse-papiers.

  4. Assurez-vous que la boîte de dialogue Rechercher ou Rechercher / Remplacer n'est pas ouverte.

  5. Ouvrez la boîte de dialogue de recherche / remplacement. Le champ 'Find what' affiche le contenu du presse-papiers: dans ce cas, le caractère CRLF - qui apparaît comme 2 'caractères de boîte' (probablement c'est un caractère non imprimable?)

  6. Assurez-vous que l'option «Expression régulière» est désactivée.

Vous devriez maintenant pouvoir compter, trouver ou remplacer comme vous le souhaitez.



4

Je l'ai trouvé fonctionner en utilisant la fonction Remplacer et en utilisant "\ n" avec le mode "Etendu". J'utilise la version 5.8.5.


1
L'un des très rares éléments de cette page qui fonctionne. Utilisation de notepadd ++ 5.8.6. Il est vraiment difficile de croire que quelque chose d'aussi simple devrait nécessiter la quantité de réponses trop complexes et souvent non fonctionnelles qui ont été données dans ce fil.
Andrew S

4

En 2013, v6.13 ou version ultérieure, utilisez:

Menu ÉditionConversion EOLFormat Windows .


Cela ne couvre pas le cas général du remplacement de CRLF par un ou plusieurs caractères arbitraires. Ou remplacer un ou plusieurs caractères arbitraires par CRLF (par exemple, remplacer les caractères d'espace par CRLF).
Peter Mortensen

2

En supposant qu'il ait une recherche «d'expressions régulières», recherchez \ r \ n. Je préfère \ r? \ N, car certains fichiers n'utilisent pas de retour chariot.

EDIT: Merci pour la rétroaction, celui qui a voté contre. J'ai appris cela ... eh bien, rien, car vous n'avez fourni aucun retour. Pourquoi est-ce mal?


1
Je ne sais pas exactement pourquoi cela ne fonctionne pas, mais ce n'est pas le cas. Je suppose que cette implémentation regex (dans Notepad ++) ne vérifie qu'une seule ligne à la fois et ignore tous les nouveaux caractères de ligne. C'est probablement pourquoi vous avez été rejeté.
Frank Hadder

1
oui. regex est ligne par ligne dans notepad ++, vous pouvez donc faire correspondre positionnellement à EOL avec $ mais vous ne pouvez pas rechercher / remplacer les expressions qui traversent les limites de ligne.
Warren P

2

Utilisez l'option de recherche avancée ( Ctrl+ R) et utilisez le raccourci clavier pour CRLF ( Ctrl+ M) pour insérer un retour chariot.


Ctrl + R ne fonctionnait pas pour moi quand je l'ai essayé. Il a inséré un étrange caractère de contrôle dans le document, " DC2". Version Notepad ++: 7.5.6 (2018-05-19).
Peter Mortensen

2

Si vous devez effectuer un remplacement d'expression rationnelle complexe, y compris \ r \ n, vous pouvez contourner la limitation par une approche en trois étapes:

  1. Remplacez tout \r\npar une balise, disons #GO#→ Cochez «Étendu», remplacez \r\npar#GO#
  2. Effectuez votre regexp, par exemple, supprimer une multiligne ICON="*"d'un signet html → Vérifier l'expression régulière, remplacerICON=.[^"]+.> by >
  3. Remettez \ r \ n → Cochez 'Étendu', remplacez #GO#par\r\n

2

Allez dans Affichage -> Afficher le symbole -> Afficher tout le caractère // C'est travaillé pour moi


1

Faites ce réglage. Menu-> Affichage-> Afficher le symbole-> décocher Afficher la fin de la ligne


1
Cela ne répond pas à la question d'origine. Veuillez expliquer pourquoi vous pensez que ceci est une contribution utile à ce Q&R. Veuillez également lire les pages du centre d'aide pour savoir comment apporter des réponses utiles.
AdrianHHH

1

J'ai ouvert le fichier dans Notepad ++ et ai fait un remplacement en quelques étapes:

  1. Remplacez tous les "\ r \ n" par "\ r \ n"
  2. Remplacez tous "; \ r \ n" par "\ r \ n"
  3. Remplacez tous les "\ r \ n" par ""

Cela place toutes les pauses là où elles devraient être et supprime celles qui cassent le fichier.

Ça a marché pour moi.


1

J'étais totalement incapable de le faire dans NP v6.9. Je l'ai trouvé assez facile sur Msoft Word (2K).

Ouvrez le document, allez dans éditer-> remplacer.

Ensuite, en bas de la boîte de recherche, cliquez sur "plus" puis trouvez le bouton "Spécial" et ils ont plusieurs choses pour vous. Pour le style Dos, j'ai utilisé celui du "paragraphe". Il s'agit d'une paire cr lf dans windows land.


0

Faites simplement un \ r avec une recherche et remplacez-le par un blanc dans le champ de remplacement pour que tout monte sur une ligne. Ensuite, faites une recherche et remplacez (dans mon cas par un point-virgule) et remplacez par; \ n

:) -T & C


1
Ceci est différent des réponses existantes comment?
Tous les travailleurs sont essentiels

0

Pour changer un document de lignes séparées en une seule ligne, chaque ligne formant une entrée dans une liste séparée par des virgules:

  1. ctrl+ fpour ouvrir la recherche / le remplaçant.
  2. Cliquez sur l'onglet "Remplacer".
  3. Remplissez l'entrée "Rechercher quoi" avec " \r\n".
  4. Remplissez l'entrée "Remplacer par" par " ," ou " , " (selon la préférence).
  5. Décochez la case "Faire correspondre le mot entier" (le bit important qui échappe à la logique).
  6. Cochez la case d'option "Extended".
  7. Cliquez sur le bouton "Remplacer tout".

Ces étapes tournent par exemple

foo bar

bar baz

baz foo

dans:

foo bar, bar baz, baz foo

ou: (selon la préférence)

foo bar, bar baz, baz foo


0

Vous pouvez peut-être utiliser des plugins TextFX

Dans TextFX, allez dans textfx edit → delete blank lines


0

Pour trouver tout type de séquence de saut de ligne, utilisez la construction d'expression régulière suivante:

\R

Pour rechercher et sélectionner consécutives des séquences de saut de ligne, ajouter +après \R: \R+.

Assurez-vous d'activer le mode d' expression régulière :

entrez la description de l'image ici

Ça correspond:

  • U+000DU+000A -Séquence CRLF
  • U+000A- LINE FEED, LF
  • U+000B- LINE TABULATION, VT
  • U+000C- FORM FEED, FF
  • U+000D- CARRIAGE RETURN, CR
  • U+0085 - NEXT LINE , NEL
  • U+2028 - LINE SEPARATOR
  • U+2029 - PARAGRAPH SEPARATOR
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.