我有一根绳子
字符串src=”https://stackoverflow.com/questions/13014947/How 今天的事情/*这是注释*\*/您的代码/*\*这是另一条注释*/有效吗?”
我想从src
字符串中删除/*这是comment*\*/
和/**这是另一个comment*/
子字符串
我尝试使用正则表达式,但由于经验不足而失败
最佳多行注释正则表达式是(?s)/\*.*?\*/
的展开版本,如下所示
String pat="/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/";;
请参阅regex101.com上的regex演示和说明
总之,
/\*
-匹配注释开头/*
[^*]*\*+
-匹配除*
之外的0+个字符,后跟1+文字*
(?:[^/*][^*]*\*+)*
-0+序列:[^/*][^*]*\*+
-不是/
或*
(与[^/*]
匹配),后跟0+非星号字符([^*]*
),后跟1+星号(\*+
)
/
-关闭/
David的正则表达式需要26个步骤才能在示例字符串中找到匹配项,而我的正则表达式只需要12个步骤。如果输入量很大,David的正则表达式很可能会因堆栈溢出问题或类似问题而失败,因为正则表达式引擎在每个位置执行惰性模式扩展,因此*?
惰性点匹配效率低下,而我的模式一次匹配线性文本块