pattern 加前缀 (?s) 即dotall

解决方案 »

  1.   

    allenhe() ( ) 信誉:100  2004-04-05 21:30:00  得分:0 
     
     
      [\\w]*
    任意长
      
     
    大师阿!
    \\w == a-zA-Z_
      

  2.   

    a-zA-Z_ 怎么匹配 \r\n\t?
      

  3.   

    allenhe() ( ) 信誉:100  2004-04-05 23:09:00  得分:0 
     
     
      [\\w\\s]*
      
     
    这个可以匹配 $%^&*()!~@ 等吗?
    好好看看jdk document 再说吧
      

  4.   

    前面用DOTALL后面用 . 匹配:
    (?s).*
      

  5.   

    比如要match 
    'startjava#$%   \n\t\regexp example#$%@#end'中的
    'java#$%   \n\t\regexp example#$%@#'pattern就要这样写 "(?s)start(.*)end"
    或者 "(?s)(?<=start).*(?=end)"
    第一个就可以用match.group(1)取出内容
    第二个直接用group()就可以了具体关于java regexp 可以参见j2se doc java.util.regex.*import java.util.regex.*;
    class RegexTest {
        public static void main (String[] args ) {
            String str =
            "startjava#$%   \n\t\regexp example#$%@#end" +
            str = str.trim();
            Pattern p =
            Pattern.compile("(?s)(?<=start).*(?=end)");
            Matcher m = p.matcher(str);
            if (m.find()) System.out.println( m.group() );
        }
    }