Je suis à l'aide de Notepad ++ Rechercher et remplacer et j'ai une regex qui recherche [^|]\r qui trouvera la fin de la ligne qui commence par 8778.

8778|44523|0||TENNESSEE|ADMINISTRATION||ROLL 169 BATCH 8|1947-09-22|0|OnBase 
See Also 15990TT|

Je veux fondamentalement fusionner cette ligne avec celle en dessous, il devient donc ceci:

8778|44523|0||TENNESSEE|ADMINISTRATION||ROLL 169 BATCH 8|1947-09-22|0|OnBase See Also 15990TT|

Ive essayé le remplacement étant un espace vide, mais sa dernière personnage sur cette ligne (un E dans ce cas) et le remplaçant avec un espace, de sorte que sa fabrication

8778|44523|0||TENNESSEE|ADMINISTRATION||ROLL 169 BATCH 8|1947-09-22|0|OnBas  
See Also 15990TT|

Y a-t-il un moyen de le rendre essentiellement fusionner les deux lignes?

2
user9758771 30 mars 2021 à 23:28

3 réponses

Meilleure réponse

\r correspond à un symbole de retour de chariot, pour correspondre à une pause de ligne, vous avez besoin \R correspondant à une séquence de pause de ligne.

Pour conserver une partie d'un motif après le remplacement, capturez cette partie avec des parenthèses, puis utilisez une brouillon de ce groupe.

Vous pouvez donc utiliser

([^|\r])\R

Remplacer par $1. Ou avec $1 si vous devez ajouter un espace.

Détails

  • ([^|\r]) - Capturing Group 1 ($1 est la déférence qui fait référence à la valeur du groupe à partir du motif de remplacement): tout char type que | et cr
  • \R - Toute séquence de chargement de la ligne, LF, CR ou CRLF.

Voir le Regex Demo et la démo Notepad ++ avec Paramètres:

enter image description here

1
Wiktor Stribiżew 30 mars 2021 à 22:08

Le problème est que vous utilisez [^|] pour correspondre à tout ce qui n'est pas un caractère de tuyau avant le retour de chariot, qui, sur le remplacement, supprimera ce personnage (donc pourquoi vous perdez un e).

S'il est impératif de faire correspondre uniquement des retours de chariot qui suivent des caractères non-tuyaux, capturez le caractère précédent ([^|])\r$, puis replacez-le dans le remplacement à l'aide de $1.

Vous manquez également un \n dans votre regex, c'est pourquoi le remplacement ne concaténe pas les deux lignes. Donc, votre recherche doit être ([^|])\r\n$ et votre remplacement doit être $1.

1
Larry Zhang 30 mars 2021 à 20:34

Trouver

(\r\n)+

Pour "remplacer" - ne mettez rien dans (pas même un espace)

enter image description here

-1
Monomachus 30 mars 2021 à 20:36