匹配java文件中的整个字符串,字符串中可能还有\"。
这个正则该怎么写

解决方案 »

  1.   

    非常复杂!得过滤掉多行注释和单行注释中含有的字符串。下面这个是原来做的一个处理 Java HTML 高亮显示中的截出来的一段代码,有兴趣的话可以看看。public class JavaString {    /**
         * 多行注释
         */
        private final static String MULTI_COMMENT = "/\\*[^*]*\\*+(?:[^/*][^*]*\\*+)*/";
        
        /**
         * 单行注释
         */
        private final static String SINGLE_COMMENT = "//[^\\r\\n]*+";
        
        /**
         * 字符串
         */
        private final static String QUOTE_STRING = "\"[^\\\\\"]*(?:\\\\.[^\\\\\"]*)*\"";    /**
         * 匹配字符串的正则表达式
         */
        private final static Pattern REGEX_QUOTE_STRING = Pattern.compile(
                "(" + SINGLE_COMMENT + "|" + MULTI_COMMENT + ")|" +
                "(" + QUOTE_STRING + ")"    
            );
    }最后一个就是用于匹配 Java 字符串的正则表达式(可以忽略掉注释中的,并且能识别带有转义符的字符串),
    字符串在这个表达式的第二组中。这个表达式非常复杂,由其是 MULTI_COMMENT 和 QUOTE_STRING 这两个!这两个可能会很难理解,有兴趣的话可以看看这个帖子:http://topic.csdn.net/u/20081214/20/884897d7-ed16-4b05-8b24-2aa98f627e35.html