Menu

Unir dos o mas lineas en una

LARAMJO
2014-08-28
2014-09-01
  • LARAMJO

    LARAMJO - 2014-08-28

    Hola

    Tengo un texto de la siguiente manera:

    <br> 1 texto texto texto texto texto
    <
    br> texto texto texto texto texto
    <br> 2 mas texto mas texto mas texto
    <
    br> mas texto mas texto
    <br> 3 mucho mas texto
    <
    br> mucho mas texto

    Deseo dejarlo asi:

    <br> 1 texto texto texto texto texto<br> texto texto texto texto texto
    <br> 2 mas texto mas texto mas texto<br> mas texto mas texto
    <br> 3 mucho mas texto<br> mucho mas texto

    existe alguna forma de hacer con expresiones regulares. Gracias de ante mano por su valiosa colaboración.

     
  • THEVENOT Guy

    THEVENOT Guy - 2014-09-01

    Hello, LARAMJO,

    1) In ENGLISH :

    I'm sorry not to be able to answer you in Spanish :-( But I wrote this post, in TWO languages ( English and French ). I hope that, with these two texts, everything will be clear enough !

    From your post, I suppose that ONLY lines, beginning with the string "<br> " and followed with a NON digit character, must be added at the end of the previous line ?

    If so, here are TWO different search/replacement to get your solution :


    FIRST solution :

    • Open the Reeplazar dialog ( CTRL + H )

    • Select the Expresión regular search mode

    • Type in \R(?!<br> \d) in the Buscar zone

    • Leave the Reemplazar con zone EMPTY

    • Click on the Reemplazar todo button

    Notes :

    \R represents any kind of EOL ( End of Line ) which may be \r\n for Windows files, \n for UNIX files or \r for Old Mac files.

    (?!<br> \d) is a negative look-ahead ( a condition which is NEVER part of the search regex, but witch MUST be realized ( positive lookahead ) or NOT realized ( negative lookahead , at cursor position.

    So, the complete regex just searches an End of Line, ONLY IF it's NOT followed by the string "<br> ", which is followed, itself, by any digit character.

    If so, this EOL must to be deleted. That's why the Replace field is empty


    SECOND solution :

    • Open the Reemplazar dialog ( CTRL + H )

    • Select the Expresión regular search mode

    • Type in \R(<br> \D) in the Buscar zone

    • Type in \1 in the Remplazaz con zone

    • Click on the Reemplazar todo button

    Notes :

    \R : See above

    (<br> \D) represents any string "<br> ", followed with a NON digit character. As it's surrounded with round brackets, it's, therefore, stored as group 1

    \1, in replacement part, means that the group 1, ONLY, without the EOL, is re-written !

    Best Regards,

    guy038

    P.S. :

    You'll find good documentation, about the new Boost C++ Regex library ( similar to the PERL Regular Common Expressions ) used by Notepad++, since the 6.0 version, at the TWO addresses below :

    http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

    http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html

    • The FIRST link explains the syntax, of regular expressions, in the SEARCH part

    • The SECOND link explains the syntax, of regular expressions, in the REPLACEMENT part


    2) En FRANÇAIS :

    Je suis désolé de ne pas pouvoir vous répondre en Espagnol :-( Mais j'ai écrit ce message en DEUX languages ( Anglais et Français ). J'espère, qu'avec ces deux textes, tout vous paraîtra assez clair !

    D'après votre message, je suppose ques les SEULES lignes, commencant par la chaîne "<br> " et suivie par un caractère NON chiffre, doivent être ajoutées, à la fin de la ligne précédente ?

    Si tel est le cas, voici deux Recherche/Remplacement, afin d'obtenir votre solution :


    PREMIÈRE solution :

    • Ouvrir la fenêtre Reeplazar ( CTRL + H )

    • Sélectionner le mode de recherche Expresión regular

    • Saisir \R(?!<br> \d) dans la zone Buscar

    • Laisser la zone Reemplazar con VIDE

    • Cliquer sur le bouton Reemplazar todo

    Notes :

    \R représente tout type de EOL ( Fin de Ligne ), qui peut être \r\n pour les fichiers Windows, \n pour les fichiers UNIX ou \r pour les fichiers Old Mac.

    (?!<br> \d) est un negative look-ahead, une condition qui ne fait JAMAIS partie de la regex cherchée, mais qui DOIT être réalisée ( lookahead positif ) ou NON réalisée ( lookahead négatif ), à la position du curseur.

    Donc, la regex complete cherche, simplement, une Fin de Ligne, SEULEMENT SI elle n'est PAS suivie par une chaîne "<br> ", qui est, elle-même, suivie par un caractère chiffre quelconque.

    Dans ce cas, cette EOL doit être supprimée. C'est pourquoi le champ Reemplazar est vide


    SECONDE solution :

    • Ouvrir la fenêtre Reemplazar ( CTRL + H )

    • Sélectionner le mode de recherche Expresión regular

    • Saisir \R(<br> \D) dans la zone Buscar

    • Saisir \1 dans la zone Remplazaz con

    • Cliquer sur le bouton Reemplazar todo

    Notes :

    \R : Voir ci-dessus

    (<br> \D) représente toute chaîne "<br> ", suivie d'un caractère NON chiffre. L'ensemble, étant entouré de parenthèses, est, par conséquent, mémorisé en tant que groupe 1

    \1, en partie *remplacement, signifie que le groupe 1, UNIQMENT, SANS EOL, est ré-écrit !

    Amitiés,

    guy038

    P.S. :

    Vous trouverez une bonne documentation, concernant la nouvelle bibliothèque Boost C++ Regex ( similaire aux PERL Regular Common Expressions ) utilisée par Notepad++, depuis la version 6.0, aux DEUX adresses, ci-dessous :

    http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/syntax/perl_syntax.html

    http://www.boost.org/doc/libs/1_48_0/libs/regex/doc/html/boost_regex/format/boost_format_syntax.html

    • Le PREMIER lien explique la syntaxe, des expressions régulières, en partie RECHERCHE

    • Le SECOND lien explique la syntaxe, des expressions régulières, en partie REMPLACEMENT

     

    Last edit: THEVENOT Guy 2014-09-05