1、字符串 类似于: 日期<font color="red">:</font><a name="B03_公告发布日期">2008年6月22日</a></span>
   求获得“2008年6月22日”的正则表达式(要分析的字符串以"日期"开头,接着跟的非<>代码是一个:号,然后下一个非<>代码就是要获取的内容)2、字符串 类似于: 2008年12月01日,2008Y12M01D
   求获得像“年月日”或"YMD"等日期中间的叁个字符(要分析的字符串还可能是08Y6M01D或08年12月1日等)

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【hzpike】截止到2008-06-23 11:42:36的历史汇总数据(不包括此帖):
    发帖数:27                 发帖分:950                
    结贴数:23                 结贴分:750                
    未结数:4                  未结分:200                
    结贴率:85.19 %            结分率:78.95 %            
    楼主加油
      

  2.   

    http://blog.csdn.net/rascalboy520/archive/2008/06/03/2506444.aspx
    你先看下这个,我这边看能不能帮你解决,
      

  3.   


    public static void do6(){
    String str="日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span> "; 
    Pattern pattern = Pattern.compile("日期 <[^>]+>: </font> <a name=[^>]+>([^<]+)</a> </span>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()){
    System.out.println(m.group(1).trim());
    }
    }
    public static void do7(){
    String str="2008年12月01日,2008Y12M01D";
    Pattern pattern = Pattern.compile("(((\\d+)[年|Y](\\d+)[月|MO](\\d+)[日|D]))",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()){
    System.out.println(m.group(3)+"##"+m.group(4)+"##"+m.group(5));
    System.out.println(m.group(1));
    }
    }
      

  4.   

    谢谢回帖。
    不过,您给的表达式还有些不符合我的要求。
    1、日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span>
     其中 <a name=\"B03_公告发布日期\">不一定有的,也许是其他代码,总之要取的数据在冒号后的第一个非 <>代码里。
    字符串也许是:" 日期 :  <font size=9>2008年6月22日 </font><BR> </span>"或日期<br> :<br> <a href='xxx'>2008年6月22日 </a><BR> </span>"等等2、年月日或YMD也是不一定的,也许是2008y12m01d等,总是是夹在日期数字中间的字母或汉字
      

  5.   

    我调了一下,你再看看吧,
    1.
    public static void do6(){
    String str="日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span> "; 
    Pattern pattern = Pattern.compile("日期 <[^>]+>: </font>.*?<a [^>]+>([^<]+)</a>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()){
    System.out.println(m.group(1).trim());
    }
    }2.
    public static void do7(){
    String str="2008年12月01日,2008Y12M01D";
    Pattern pattern = Pattern.compile("((\\d+(.*?)\\d+(.*?)\\d+([^\\d]{1})))",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()){
    System.out.println(m.group(3)+"##"+m.group(4)+"##"+m.group(5));
    }
    }
      

  6.   

    日期 <[^>]+>: </font>.*?<a [^>]+>([^<]+)</a>我的字符串里不一定含有</font>或</a>的
      

  7.   

    你说的不太明白啊,<br> : <br> <a href='xxx'>2008年6月22日 </a> <BR>
    这个日期是出现在第二个非<>里啊,
      

  8.   

    按你说的,我总结三种情况:
    1.<br> : <br> <a href='xxx'>2008年6月22日 </a>
    2.<font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a>
    3.日期 :  <font size=9>2008年6月22日 </font> <BR> </span>
    public static void do6(){
    String str="日期 <font color=\"red\">: </font> <a name=\"B03_公告发布日期\">2008年6月22日 </a> </span> 字符串也许是:\" 日期 :  <font size=9>2008年6月22日 </font> <BR> </span>\"或日期 <br> : <br> <a href='xxx'>2008年6月22日 </a> <BR> </span>"; 
    Pattern pattern = Pattern.compile(": (<[^>]+>)?.*?<[^>]+>([^<]+)<[^>]+>",Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while(m.find()){
    System.out.println(m.group(2).trim());
    }
    }