1 votes

Comment combiner des lignes de texte dans Notepad++ qui sont entre des lignes de chaîne en une seule ligne de code, tout en conservant les lignes en dehors des délimiteurs de chaîne?

J'ai des centaines de pages au format texte dans Notepad++ qui proviennent d'un fichier pdf. Chaque page du fichier comporte un nombre variable de lignes, mais elles contiennent toutes des lignes qui disent "TARGET_LINE," et "LAST_LINE,". Entre ces deux chaînes se trouvent diverses lignes de texte. Alors que "TARGET_LINE," et "LAST_LINE," apparaissent toujours, le nombre de lignes entre elles diffère - parfois il y a quatre lignes entre elles, comme indiqué ci-dessous, d'autres fois il y en a deux, etc.

J'ai besoin d'une formule de Recherche et Remplacement qui 1) conserve les lignes au-dessus de TARGET_LINE, mais 2) combine toutes les lignes entre "TARGET_LINE," et "LAST_LINE," en une seule ligne de code séparée, y compris les lignes de préfixe et suffixe, de sorte que ...

abc
123
xyz
TARGET_LINE, 
deuxième ligne lfutdytdyt
3e ligne x;lkhr;lkj
quatrième klufhkgfk
5e ;lkjk;lkj;lj
LAST_LINE,
def
456
TARGET_LINE, 
lfutdytdyt
klkrjtlkj
LAST_LINE,

,,, devient:

abc
123
xyz
TARGET_LINE, deuxième ligne lfutdytdyt 3e ligne x;lkhr;lkj quatrième klufhkgfk 5e ;lkjk;lkj;lj LAST_LINE,
def
456
TARGET_LINE, lfutdytdyt klkrjtlkj LAST_LINE,

(une virgule entre chaque ancienne ligne est préférée mais pas nécessaire):

Merci d'avance pour votre temps et votre assistance.

2voto

Toto Points 14447

ATTENTION :

Ceci ne fonctionnera que si vous placez le curseur au début de la première ligne contenant TARGET_LINE


  • Ctrl+H
  • Rechercher : (?:^(TARGET_LINE),\h*|\G)((?:(?!LAST_LINE).)*?)\R
  • Remplacer par : $1$2,
  • DÉSÉLECTIONNER Conserver la casse
  • SÉLECTIONNER Expression régulière
  • DÉSÉLECTIONNER . correspond aux sauts de ligne
  • Remplacer tout

Explication :

(?:                     # groupe de non capture            
    ^                       # début de la ligne
    (TARGET_LINE)           # groupe 1
    ,\h*                    # une virgule suivie de 0 ou plusieurs espaces horizontaux
  |                     # OU
    \G                      # redémarrer à partir de la dernière position de correspondance
)                       # fin du groupe
(                       # groupe 2
    (?:                     # groupe de non capture
        (?!LAST_LINE)           # regard en avant négatif, s'assurer qu'il n'y a pas "LAST_LINE" après
        .                       # n'importe quel caractère sauf un saut de ligne
    )*?                     # fin du groupe, peut apparaître 0 ou plusieurs fois, non gourmand
)                       # fin du groupe
\R                      # tout type de saut de ligne (\r, \n, \r\n)

Remplacement :

$1          # contenu du groupe 1
$2          # contenu du groupe 2
,           # une virgule suivie d'un espace

Capture d'écran (avant) :

saisir la description de l'image ici

Capture d'écran (après) :

saisir la description de l'image ici

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