【发布时间】:2016-10-23 01:43:59
【问题描述】:
我有正则表达式,应该删除 cmets(是的,这很糟糕,但对我来说它有效)
String regex = (^\/\/.*)|(\s+\/\/.*)|((\/\*)(.|\n)+?(\*\/));
此代码应删除所有评论
Pattern.compile(regex).matcher(some text).replaceAll(" ");
但我怎样才能删除所有除了正则表达式?
例如: 如果我有这样的字符串:
/*Comments it's cool*/
public static void foo(){}
我的正则表达式匹配 cmets,但我需要删除不匹配的内容,所以它看起来像:
/*Comments it's cool*/
【问题讨论】:
-
只是连接所有匹配项?
-
哦,来吧 - 匹配正则表达式并将它们附加到结果字符串/缓冲区/等。顺便说一句,你真的很高兴使用
(.|\n)+?吗?至少使用.*?(使用(?s)内联修饰符)。但是,对于多行 cmets,有更好的正则表达式。 -
而
(^\/\/.*)|(\s+\/\/.*)与(\s*\/\/.*)相同。 -
顺便说一句。您可能想查看我的查询/答案:How to remove C-style comments from code。