使用注释转义行的正则表达式

时间:2011-12-26 07:50:06

标签: java regex

我已经使用正则表达式//.*|(\"(?:\\\\[^\"]|\\\\\"|.)*?\")|(?s)/\\*.*?\\*/来排除注释行,它运行良好但是它被卡在行if (broper.equals("//BR") && brlnum.equals("0"))上并将其视为注释行并将其转义出来。

需要进行哪些更正?

1 个答案:

答案 0 :(得分:0)

这有点风险,如果评论本身可能包含奇数引号,则会失败。但如果这不是一个问题,你可以去寻找偶数引号后面的//,从而确保你现在不在字符串中:

//(?:[^"\r\n]*"[^"\r\n]*")*[^"\r\n]*$|/\*.*?\*/

第二个备选方案符合标准的,未通过/*...*/条评论。

在Java中:

Pattern regex = Pattern.compile("//(?:[^\"\r\n]*\"[^\"\r\n]*\")*[^\"\r\n]*$|/\\*.*?\\*/", Pattern.DOTALL | Pattern.MULTILINE);