我有一根绳子
字符串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的正则表达式很可能会因堆栈溢出问题或类似问题而失败,因为正则表达式引擎在每个位置执行惰性模式扩展,因此*?惰性点匹配效率低下,而我的模式一次匹配线性文本块