Community
    • Login

    REGEX again: How can I select/mark this 3 works on a different lines

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    20 Posts 2 Posters 6.7k 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.
    • guy038G
      guy038
      last edited by guy038

      Vasile,

      I did understand that you wanted to mark the three consecutive lines of each block of lines, and not only the first one !

      But, just follow my first post , on that topic :

      To verify, copy, as before, my previous text in a new tab

      • FIRSTLY, perform the S/R, below :

      SEARCH ^\h*Recente\R(?=\h*Coments\R\h*Tags|\h*Tags\R\h*Coments)|^\h*Coments\R(?=\h*Recente\R\h*Tags|\h*Tags\R\h*Recente)|^\h*Tags\R(?=\h*Recente\R\h*Coments|\h*Coments\R\h*Recente)

      REPLACE #$0

      => A sharp character, #, should be inserted at the beginning of the FIRST line of each block


      • SECONDLY, perform the three regexes , below, ONE AFTER ANOTHER, in the Mark dialog, by clicking on the Mark All button

      SEARCH (?-s)^#.+

      SEARCH (?-s)^#.+\R\K.+

      SEARCH (?-s)^#(.+\R){2}\K.+

      => At the end, each line, of each block, should be marked


      But, from what you said in your last post, I suppose, for instance, that, giving the example text, below :

      		Text to be deleted  Recente    Text to be deleted
      				bla bla			Coments			123456789
      	ABCDEF	Tags bla bla bla that's the End
      

      you would expect the resulting text :

      Recente
      Coments
      Tags
      

      Is my assumption correct ? If so, give me half an hour more, and I’ll post you the final regexes

      Best Regards

      guy038

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

        Vasile,

        Although, you have not reply to my question, yet, I suppose that I was right and here are the new regexes, to achieve such a result !

        As said before, the first regex is UNCHANGED. Remember that it just marks any of the six blocks, wanted, with a special character, # ( which must not be used, yet, in your files ! ) So this first S/R is :

        SEARCH ^\h*Recente\R(?=\h*Coments\R\h*Tags|\h*Tags\R\h*Coments)|^\h*Coments\R(?=\h*Recente\R\h*Tags|\h*Tags\R\h*Recente)|^\h*Tags\R(?=\h*Recente\R\h*Coments|\h*Coments\R\h*Recente)

        REPLACE #$0

        => After this global replacement, a sharp character, #, should have been inserted, at the beginning of the FIRST line of each block !


        Now, perform, SUCCESSIVELY, the three S/R, below, by clicking on the Replace All button

        SEARCH (?-s)^#(?:.+\R){2}\K.*(Recente|Coments|Tags).*

        REPLACE \1

        => The third line, of each block, should have been modified


        SEARCH (?-s)^#.+\R\K.*(Recente|Coments|Tags).*

        REPLACE \1

        => The second line, of each block, should have been modified


        SEARCH (?-s)^#.*(Recente|Coments|Tags).*

        REPLACE \1

        => Finally, the first line, of each block, should have been modified

        Et voilà !

        IMPORTANT :

        • These three S/R must be run, in that EXACT order, to be sure that the temporary mark character, #, will be deleted during the last S/R, only !!

        • Don’t use the Replace button for these three S/R, ONLY the Replace All one !!

        Cheers,

        guy038

        1 Reply Last reply Reply Quote 0
        • Vasile CarausV
          Vasile Caraus
          last edited by Vasile Caraus

          hello guy38, I wasn’t here, sorry.
          So, I test all your new regex. First, the long regex, replace by #$0 works very good.

          The little problem are the next 3 SUCCESSIVELY regex. One by one. After Search and Replace with \1, I get the successful message “6 occurrences has were replaced.”

          The problem is that, in fact, nothing has changed…is like nothing happen…

          The last of the 3 successively regex (?-s)^#.*(Recente|Coments|Tags).*, after replace with \1, removes the # sign witch I had put with the first long regex

          1 Reply Last reply Reply Quote 0
          • Vasile CarausV
            Vasile Caraus
            last edited by

            Oh, WORKS ! I use another example. So, excuse-me. All your regex works just fine guy38. You practically move all 3 words to the beginning of lines.

            Thanks a lot

            1 Reply Last reply Reply Quote 0
            • Vasile CarausV
              Vasile Caraus
              last edited by Vasile Caraus

              and, I return to my old problem. Now with your help, I manage to take all 3 words to the start of the lines. The question was, how can I mark/delete something before or after those 3 words. For example:

              text bla Commens
              text bla bla Tags

              Recente
              Coments
              Tags

              text bla Recente
              text bla bla Tags

              So, you see that the words “Recente, Coments and Tags” are repeating. So, I manage to resolve my first problem: HOW TO DELETE EVERYTHING BEFORE THOSE 3 words on the 3 successively lines, included those 3 lines:

              Search
              ((?s)((^.*)^Recente|^Coments|^Tags))(.*$)
              Replace by:
              Leave empty

              1 Reply Last reply Reply Quote 0
              • Vasile CarausV
                Vasile Caraus
                last edited by

                Now, to delete everything after those 3 words (and 3 lines) included those 3 lines

                Search:
                ^.*(?s)^Recente|^Coments|^Tags.*[\s\S]
                Replace by:
                leave empty

                1 Reply Last reply Reply Quote 0
                • Vasile CarausV
                  Vasile Caraus
                  last edited by

                  so, you see my friend, where I wanted to get. The single problem was that all that 3 words, were somewhere in the middle of the lines, and I didn’t know how to select those SUCCESSIVELY lines.

                  thanks a lot.

                  But If you know another 2 regex to do directly this, for deleting before and after, without adding the 3 words at the beggining at the lines, please let me know.

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

                    Vasile,

                    I’m just back on our forum and, after reading your post, where you said :

                    The problem is that, in fact, nothing has changed…is like nothing happen…

                    I quickly guessed why it did NOT work :-) Ah ! Again, I forgot to add this VERY IMPORTANT fact :

                    If your pattern regex contains one or more look-behinds AND/OR any \K form, you must, EXCLUSIVELY use the Replace All button to perform a global replacement.

                    DON’T use the Replace button, for a step by step replacement : it does NOTHING !!

                    So, for performing, correctly, my three previous regexes :

                    (?-s)^#(?:.+\R){2}\K.*(Recente|Coments|Tags).*

                    (?-s)^#.+\R\K.*(Recente|Coments|Tags).*

                    (?-s)^#.*(Recente|Coments|Tags).*

                    with replacement \1

                    • Move the caret, before the text to change

                    • Perform the three S/R, in that order, by clicking, EXCLUSIVELY, on the Replace All button ( Not the Replace button !! )

                    It should be OK

                    Of course, don’t forget to delete the extra # character, at the end

                    Cheers,

                    guy038

                    So, I updated my previous post !

                    1 Reply Last reply Reply Quote 0
                    • Vasile CarausV
                      Vasile Caraus
                      last edited by

                      WORKS !!!

                      1 Reply Last reply Reply Quote 0
                      • Vasile CarausV
                        Vasile Caraus
                        last edited by

                        A different nice regex looks like this. First check . match newline

                        Search:
                        .*\n([ \t]+Recente\s+Coments\s+Tags).*
                        REPLACE By:
                        $1 or \1

                        Don’t forget to check . match newline

                        This will select all that 3 words, even if are delimitaded by tab or spaces. And will delete the rest of document.
                        But how can I use this regex, to remove everything only before those 3 words, and another regex to remove only after those 3 words?

                        1 Reply Last reply Reply Quote 0
                        • Vasile CarausV
                          Vasile Caraus
                          last edited by

                          or, without check . match newline

                          Search:
                          (?s).*\n([ \t]+Recente\s+Coments\s+Tags).*(.*$)
                          REPLACE By:
                          $1 or \1

                          1 Reply Last reply Reply Quote 0
                          • Vasile CarausV
                            Vasile Caraus
                            last edited by

                            hello, I find the solutions:

                            So, to delete everything before those 3 words, included the 3 lines with the words:

                            Search:
                            (?s).*\n([ \t]+Recente\s+Coments\s+Tags)
                            Replace By:
                            Leave Empty

                            Delete everything after those 3 words included the 3 lines with the words:
                            Search:
                            (?s)([ \t]+Recente\s+Coments\s+Tags)(.*$)
                            Replace by:
                            $1

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