Reputation: 1134
I've got hundreds of files of the type linked here: http://pastebin.com/fGgLfZf8
But I want to remove all the comments that occupies more than one line eg.
<!--- MPU --->
should be left untouched, while
<!--
************
blablabla
************
-->
should be removed.
I know the Notepad++ feature to lookup through more than a document with regexp and I'm tryin to use it but I have some difficulty. For a start I'm trying this regexp:
<\!\-\-(.*?)\-\->
which tested in here: http://www.regextester.com/ works at least partially (because it highlights the comments made of just on line) But if I copy and paste this regexp on Notepad++ it will match just the one-line comments =\
Does anybody know how to do this in Notepad++?
Upvotes: 22
Views: 44638
Reputation: 596
A simple trick if it was a single document, is to convert the line endings to Unix .
Menu: [Edit] -> [EOL Conversion] -> [Unix]
Then just use simple \n to detect newline in your expression.
This way you don't have to change expressions constructed/copied from some online regex builders.
note: don't forget to switch line endings back to Windows, just in case.
Upvotes: 0
Reputation: 21
Another way to catch multi-line text is use the expression:
<!---([\S\s]+?)--->
\S+ matches all no-space symbols,
\s+ matches all space symbols (including \r \n \t).
It works for notepad++, maybe, otherwise too...
EDIT: At the first look I didn’t noticed that problem issue is catch and delete only multiline comments excluding monoline ones. I found method of two iterations. First we need to find and replace by nothing following text
<!—-(?:(?!.*—->)[\s\S]+?—->|)
That will catch all multiline comments and prefixes of monoline ones. Then what we need is bring back the monoline prefixes, that we lost:
Find:
(.+—->)
Replace:
<!—-\1
It will fix monoline comments. Combination of “—->“ can not appear xml code otherwise end of comment.
Upvotes: 2
Reputation: 893
Next to the "Regular expression" selection in "Search Mode" there is a "matches newline" checkbox (according to @glatapoui it should be noted that this only works in Notepad++ v6, not in previous versions).
Upvotes: 48
Reputation: 67898
This expression <!--.+?(?<=[\*\r\n])-->
matched the multi-line comments only in Notepad++ as well.
Upvotes: 4
Reputation: 23
<!--[*a-zA-Z\r\n]*-->
this one seems to only take multi-line comments in notepad++
Edit:
little mistake : spaces are a problem with this one.
You can try
<!--[\r\n]{1}[* a-zA-Z\r\n]*-->
Upvotes: 0