我已经使用正则表达式//.*|(\"(?:\\\\[^\"]|\\\\\"|.)*?\")|(?s)/\\*.*?\\*/
来排除注释行,它运行良好但是它被卡在行if (broper.equals("//BR") && brlnum.equals("0"))
上并将其视为注释行并将其转义出来。
需要进行哪些更正?
答案 0 :(得分:0)
这有点风险,如果评论本身可能包含奇数引号,则会失败。但如果这不是一个问题,你可以去寻找偶数引号后面的//
,从而确保你现在不在字符串中:
//(?:[^"\r\n]*"[^"\r\n]*")*[^"\r\n]*$|/\*.*?\*/
第二个备选方案符合标准的,未通过/*...*/
条评论。
在Java中:
Pattern regex = Pattern.compile("//(?:[^\"\r\n]*\"[^\"\r\n]*\")*[^\"\r\n]*$|/\\*.*?\\*/", Pattern.DOTALL | Pattern.MULTILINE);