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

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

阅读 6.5k
3 个回答

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

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

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

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

Java代码如下:

String p = "(?<!:)\\/\\/.*|\\/\\*(\\s|.)*?\\*\\/";
System.out.println(str.replaceAll(p,""));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进