解决方案 »

  1.   

    public static void main(String[] args) {
    String s="";
    s+="****************************************************";                            
    s+="*通 知*";                                                    
    s+="*从今天起,我将对法国进行为期3天的国事访问。今年是中法建交50周年。";
    s+=" 我选择这一时机访法,是为了总结过去、传承友好、继往开来,推动中法关";
    s+="系更上一层楼。";
    s+="****************************************************  ";                          
    s+="*和戴高乐将军以卓越的战略眼光和非凡的政治勇气             YI:12345/12345   ";                            
    s+="*两国领导人坚持从全球视野出发,秉持独立自主精神     ";                                
    s+="                                     YI:678907/12345   ";                         
    s+="*两国开展了多项开拓性合作,不断丰富中法关系战略内涵    ";                               
    s+="                      YI:asdfwe/asdf ";

    Matcher m =Pattern.compile("\\s\\*(.*?)\\s(YI.*?)\\s").matcher(s);

            while (m.find()) {
             System.out.println("标题"+m.group(1)+"------------->指令"+m.group(2));
             }
    }
      

  2.   

    String str="";
    str+=" *停 机 通 知* ";
    str+="为进行主机系统维护,订座生产系统将于2014年3 月30日";
    str+=" 00:00:00到2014年3月30日01:30:00进行计划停机,请您 ";
    str+="提前做好准备工作,由此给您造成的不便,敬请谅解.如有 ";
    str+="不明,请致电:中国航信在线支持中心010-84018401 ";
    str+="**************************************************** ";
    str+="*NOTICE TO ALL UA AGENTS YI:UA/TZ474 ";
    str+="*北京民航信息科技有限公司变更办公地址的通知 ";
    str+=" YI:TRAVEL/TZ617 ";
    str+="*订座系统增加机上网络服务标识显示位置描述说明 ";
    str+=" YI:TRAVEL/TZ616 +";
    Matcher m =Pattern.compile("\\*(.[^*]*?)\\s(YI.*?)").matcher(str);
    while (m.find()) {
    System.out.println("标题"+m.group(1)+"------------->指令"+m.group(2));
    }
      

  3.   

    上面的 yi后面没匹配上, "\\*(.[^*]*?)\\s(YI.*?)\\s"
      

  4.   

    多谢, 已经搞定。但是在测试环境中发现好像这个正则不行, 不知道是不是jdk版本问题, 
    我的思路是先将多个空格置换为一个,然后将\n回车全部replace.
    然后穷举一个匹配子项,直到子项中只有一个*.