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,

      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