<title>江苏检察院检察长:不要简单称上访者是_新闻_腾讯网</title>
<meta name="keywords" content="江苏检察院检察长:不要简单称是 杂柑 经纪人 华北电网 闹情绪">比如我要匹配
"<title>江苏" 到  "闹情绪"
String regex = "<title>江苏(.*)闹情绪";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(strSource);为什么没匹配到呢?

解决方案 »

  1.   

    因为匹配内容中包含了换行,而小数点是不能匹配换行符的加个单行模式
    String regex = "(?s)<title>江苏(.*)闹情绪";
      

  2.   

    除了过客所说的内嵌 (?s) 之外,还可以这样:Pattern p = Pattern.compile(regex, Pattern.DOTALL);
      

  3.   

    显式匹配换行符也行啊String regex = "<title>江苏((.|\n)*)闹情绪";
      

  4.   

    为什么有的行 有的不行呢?
    比如
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
    <title>公司库</title>
      <link rel="shortcut icon" href="http://china.alibaba.com/favicon.ico"/>
      <meta name="keywords" content="供求信息,商业公告板,商业机会
    我匹配
    String regex = "(?s)<title>公司库</title>(.*)商业机会 "; 
    也是无法匹配,为什么呢
      

  5.   

    String regex = "(?s)<title>公司库</title>(.*)商业机会 ";  因为你的“商业机会”后面有个空格!如果想匹配最多的字符的话,可以用 .* 否则得用 .*?比如“a=====b=====b====”,想匹配“a=====b”的话就得用“a.*?b”,想匹配“a=====b=====b”的话用“a.*b”,两种量词是不一样的,使用时请注意!