首页 > 正则去掉代码中的单行和多行注释问题

正则去掉代码中的单行和多行注释问题

最近做个代码解析工具出现了问题,就是正则去掉代码中的单行和多行注释,但是对于http://这样的内容会被去掉了,然后代码无法执行,想问下,应该怎么过滤点这种呢?


(?<!:)\/\/.*|\/\*(\s|.)*?\*\/
参考:https://regex101.com/r/uC0oP4/3

Java代码如下:

String p = "(?<!:)\\/\\/.*|\\/\\*(\\s|.)*?\\*\\/";
System.out.println(str.replaceAll(p,""));

正则不是万能的,这个是语法分析的范畴


如果引擎支持的话,可以试试预匹配(或者叫零宽断言、前向匹配什么的,反正都能查到)。

另一种思路是,先把 http:// 替换成某个不太可能冲突的占位符,例如 http:::,再去掉注释以后再替换回来。

【热门文章】
【热门文章】