Community
    • Login

    Notepad++

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    3 Posts 3 Posters 369 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ravivarma kvR
      ravivarma kv
      last edited by

      Hi.
      I have the data as below:

           2433 George has a pillow.
      

      **nothing new
      **all the bad news
      What is happening.
      13984 good to know
      Adam knows everything
      **not in a good way
      12 | new to Columbia
      **im in a mood

      I have to merge the line beginning with space with the following lines that do not begin with spaces.
      Expected result: (in 3 lines)
      2433 George has a pillow.nothing newall the bad newsWhat is happening.
      13984 good to knowAdam knows everythingnot in a good way
      12 | new to Columbia
      im in a mood

      Can anyone please help me how to execute this in Notepad++

      1 Reply Last reply Reply Quote 0
      • Terry RT
        Terry R
        last edited by Terry R

        @ravivarma-kv said in Notepad++:

        I have to merge the line beginning with space with the following lines that do not begin with spaces.

        This is a quick solution, however not entrely elegant as it will need running multiple times until no more changes occur.

        It works on the premise that we look for a line with a space at the start, then if the following line does not have a space at the start it will merge both lines. By repeatedly running it it will grow the line with a space at the front by appending a “non-space” line at the rear.

        Hopefully you know how regexes work. So under the Replace Menu.
        Find What:^(\s.+)\R(^[^ ])
        Replace With:\1\2
        Set search mode as “regular expression” and Wrap around ticked. Click on the “Replace All”, do this multiple time until the Replace function returns “0 occurances were replaced”.

        Terry

        1 Reply Last reply Reply Quote 1
        • guy038G
          guy038
          last edited by guy038

          Hello, @ravivarma-kv, @terry-r and All,

          I found out a simple regex, which needs to be executed one time, only ! I just assume, as Terry did, that pure blank lines are deleted, as well !

          So, given, for instance, this sample text below :

           1st line with 1 LEADING space
          This is
          a text
          which does
          NOT have any
          LEADING space
          
           2nd line with 1 LEADING space
          A single line WITHOUT leading space
           3rd line with 1 LEADING space
          2nd multi-lines text
          with NO
          Leading space
          
           4th line with 1 LEADING space
             1st line with 3 LEADING space
           5th line with 1 LEADING space
          
          
           6th line with 1 LEADING space
          
          
          
          
          3rd multi-lines text
          WITHOUT any
          leading space
          
          
           A last line with 1 LEADING space
          This is a
          very long
          multi-lines text
          with
          NO leading
          space
          for all
          the
          lines !
          

          Use the following regex S/R :

          SEARCH \R(?=(\x20|\z)|)

          REPLACE ?1$0

          Of course, select the Regex expression search mode. You should get the expected text :

           1st line with 1 LEADING spaceThis isa textwhich doesNOT have anyLEADING space
           2nd line with 1 LEADING spaceA single line WITHOUT leading space
           3rd line with 1 LEADING space2nd multi-lines textwith NOLeading space
           4th line with 1 LEADING space
             1st line with 3 LEADING space
           5th line with 1 LEADING space
           6th line with 1 LEADING space3rd multi-lines textWITHOUT anyleading space
           A last line with 1 LEADING spaceThis is avery longmulti-lines textwithNO leadingspacefor allthelines !
          

          I verified that I got the same output, using Terry’s regex solution ;-))


          Notes :

          • This regex searches for any kind of EOL characters, followed by, either :

            • A space character or the very end of file ( => Group 1 exists )

            • Any kind of character ( other standard char or EOL char, due the empty alternative |)

          • Due to the conditional replacement syntax ?1$0, this matched EOL character is rewritten ( $0 = Whole match ) only if  the group 1 exists. In all the other cases, it is just deleted


          Remark :

          If you prefer that the joined lines are separated with a space character, we need to distinguish between the standard characters, other than a space char, beginning the subsequent lines and any other character. So, use, instead, the followed regex S/R :

          SEARCH (?-s)\R(?=(\x20|\z)|(.)|)

          REPLACE (?1$0)(?2\x20)

          This time, due to the (?2\x20) conditional replacement, the matched EOL char is replaced with a single space character

          And you’ll get the text :

           1st line with 1 LEADING space This is a text which does NOT have any LEADING space
           2nd line with 1 LEADING space A single line WITHOUT leading space
           3rd line with 1 LEADING space 2nd multi-lines text with NO Leading space
           4th line with 1 LEADING space
             1st line with 3 LEADING space
           5th line with 1 LEADING space
           6th line with 1 LEADING space 3rd multi-lines text WITHOUT any leading space
           A last line with 1 LEADING space This is a very long multi-lines text with NO leading space for all the lines !
          

          Best Regards,

          guy038

          1 Reply Last reply Reply Quote 2
          • First post
            Last post
          The Community of users of the Notepad++ text editor.
          Powered by NodeBB | Contributors