Community
    • Login

    Marking a large text

    Scheduled Pinned Locked Moved Help wanted · · · – – – · · ·
    4 Posts 3 Posters 9.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.
    • Erik GundersenE
      Erik Gundersen
      last edited by

      Hi! I’ve just used notepad++ and had a great experience with it. I’ve got a question regarding marking a larger text. Is there any way in notepad++ to search for a text and mark from the current writing location to the searched text? I’ve got a text as following

      A
      xx
      b
      A
      xx
      b
      …

      I manually find A and have to scroll down tons of text in order to get to B, in order to shift click b. Would there be a plugin or a method for me to click A, search for b and the xx between A and B would get marked.

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

        Hello, Erik,

        There’s a simple method, using a search, in regular expression mode !

        It’s not exactly what you would like to, because you’ll need to type the two limits, inside the regular expression search, instead of clicking on the first limit and searching for the second one.

        Anyway, it’s works fine :-)

        Then, let’s suppose the subject text, below :

        aa
        bb
        Begin
        xx
        yy
        End
        
        Begin
        
        vv
        ww
        xx
        yy
        zz
        
        End
        
        12345 Begin 67 89 01 23 45 End 67890
        

        Now, follow the few steps, below :

        • Open the Search dialog

        • Choose the Regular expression search mode

        • Check the Wrap around and/or Match case options, if necessary

        • In the Find what zone, type the regex (?s)Begin\R?\K.*?(?=End)

        • Finally, click on the Find Next button

        Notes :

        • This regex select all the lines, located between the line Begin and the nearest line End OR all the text, between two strings Begin and End, located on the same line

        • The modifier (?s) means that any dot, in the expression, matches any character, even End of Line characters

        • The regex tries, first, to match the string Begin, eventually followed by its End of Line characters \R?

        • Then the \K syntax forces the regex engine to forget any previous match. So, the regex to match is, ONLY, .*?(?=End)

        • Therefore, the regex matches any character, even End of Line characters, till the nearest string End, which is, however, NOT part of the final match, too, because it’s included in a lookahead structure (?=....)

        • Of course, the strings Begin and End can be replaced by a simple character, like A and B or by regexes, like [01234] and [56789], or, even, more complex regexes !

        IMPORTANT :

        If you intend to replace these selected blocks by any text, or delete them, you must use the global replacement, clicking on the Replace All button and NOT the Replace button, because of the presence of the \K form !

        Best regards,

        guy038

        P.S. :

        You’ll find good documentation, about the new Boost C++ Regex library, v1.55.0 ( similar to the PERL Regular Common Expressions, v1.48.0 ), used by Notepad++, since its 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

        1 Reply Last reply Reply Quote 0
        • Scott SumnerS
          Scott Sumner
          last edited by

          While I like the elegance of guy038’s solution, it may be worth pointing out that the “Begin/End Select” feature could also be utilized to solve the original problem. Do a Find on the first text, then enable Begin/End Select via the Edit menu choice, right-click context menu, or shortcut key, doing so with the caret just after the found text. Then do another Find on the ending text, and end/turn-off the Begin/End Select feature (before doing this it will be enabled/checked on the Edit menu) after moving the cursor just before the found text from this second find.

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

            Hi Erik and Scott,

            Oh, yes, Scott, I forgot this obvious solution :-(

            In addition, since the N++v6.4.2 version, the Begin/End Select, command is recordable in a macro :-)

            The nice thing, with N++, is that there are, very often, several ways to achieve the same goal !

            Cheers,

            guy038

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