I want to remove comments in Java code. I have seen a lot of examples, but each was written wrong.
Here is example of code:
String somestring = "http://google.com"; // "//google.com";" is going to be removed
Another example:
get.setHeader("Accept", "*/*"); // "/*");" and later is going to be removed too
But I want right regular expression which handles those cases
I tried: http://ostermiller.org/findcomment.html Regular expression to remove comment and other popular examples
It should handle common cases:
somemethod();//it should be removed
somemethod(); /* some comment that may end on other line */
But should be handled and other situations:
String somestring = "http://google.com"; // url shouldn't be touched
get.setHeader("Accept", "*/*"); // "*/*" shouldn't be touched too
Already commented this but lets see how far we get. Java doesn't do regex literals so stripping that one from this answer we get the following regex:
((['"])(?:(?!\2|\\).|\\.)*\2)|\/\/[^\n]*|\/\*(?:[^*]|\*(?!\/))*\*\/
Debuggex Demo
If we then "replace" every match with the first capture group, every match that doesn't have a capture group to begin with (i.e. a comment) is removed:
Regex101 substitution Demo
A explanation of the more generic "match this except in conditions a|b|c"-technique I employed is available here.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With