Marking a large text
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
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.
guy038 last edited by guy038
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
Finally, click on the Find Next button
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
(?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
\Ksyntax forces the regex engine to forget any previous match. So, the regex to match is, ONLY,
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  and , or, even, more complex regexes !
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 !
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.0version, at the TWO addresses below :
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
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.
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 !