Regular expression to remove comment

Unlike the example posted above, you were trying to match comments that spanned multiple lines. By default, . does not match a line break. Thus you have to enable multi-line mode in the regex to match multi-line comments.

Also, you probably need to use .*? instead of .*. Otherwise it will make the largest match possible, which will be everything between the first open comment and the last close comment.

I don't know how to enable multi-line matching mode in Sublime Text 2. I'm not sure it is available as a mode. However, you can insert a line break into the actual pattern by using CTRL + Enter. So, I would suggest this alternative:

/\*(.|\n)*?\*/

If Sublime Text 2 doesn't recognize the \n, you could alternatively use CTRL + Enter to insert a line break in the pattern, in place of \n.


Just want to add for HTML Comments is is this

\<!--(.|\n)*?-->

I encountered this problem several years ago and wrote an entire article about it.

If you don't have access to non-greedy matching (not all regex libraries support non-greedy) then you should use this regex:

/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/

If you do have access to non-greedy matching then you can use:

/\*(.|[\r\n])*?\*/

Also, keep in mind that regular expressions are just a heuristic for this problem. Regular expressions don't support cases in which something appears to be a comment to the regular expression but actually isn't:

someString = "An example comment: /* example */";

// The comment around this code has been commented out.
// /*
some_code();
// */

Just an additionnal note about using regex to remove comments inside a programming language file.

Warning!

Doing this you must not forget the case where you have the string /* or */ inside a string in the code - like var string = "/*"; - (we never know if you parse a huge code that is not yours)!

So the best is to parse the document with a programming language and have a boolean to save the state of an open string (and ignore any match inside open string).

Again a string delimited by " can contain a \" so pay attention with the regex!

Tags:

Regex