现在我想完成这样一个功能,把一个文本文件里面的数据导入数据库。文本文件的文件内容大致如下:
......
王老五、李小二:《文章名》 XXXX年第X期第X页
陈小二、张三:《文章名》 XXXX年第X期第X页
......直接用String类的一些函数拆倒是可以,但我希望灵活些,在导入数据之前用一个类似正则表达式的式子来进行拆分(考虑到以后可能还有其他不同格式的类似需求),如何实现之?先谢谢大家!

解决方案 »

  1.   

    to:treeroot(旗鲁特)
    我是这么想的,就是希望像:
    ......
    王老五、李小二:《文章名》 XXXX年第X期第X页
    陈小二、张三:《文章名》 XXXX年第X期第X页
    ......的文件如果换成:
    ......
    XXXX年第X期第X页 王老五、李小二:《文章名》 
    XXXX年第X期第X页 陈小二、张三:《文章名》 
    ......通过修改一个正则表达式就可以拆分。
      

  2.   

    to:beiouwolf(beiouwolf) :) 是文本文件的格式吧?
    如果是的话,是这样的: 每条信息包含 作者名、文章名以及文章发表时间信息。条与条信息之间由换行分割。谢谢关注!
      

  3.   

    补充:每条信息当中,作者名可以N个,以顿号分割; 文章名一个;发表时间合乎正常时间格式即可。大概这样:( 但愿能表达明白什么意思,:) )
    <作者名><、作者名>?<:><文章名><" "><时间>
      

  4.   

    用jakarta-oro试试,写正则表达式进行匹配。特方便。
    可以把你匹配的东西转成一个string[][]出来。第一维代表总共有多少行,第二维代表数据库中的每一列~
      

  5.   

    public   static   void  main(String[] args){ String content = "王老五、李小二:《文章名1》 XXXX年第X期第X1页\n陈小二、张三:《文章名2》 XXXX年第X期第X2页\n";
    String pat = "\\b(.+?):";
    List p = Test.getSentence(pat, content, 1);
    System.out.print(p);
    pat = "《(.+?)》";
    p = Test.getSentence(pat, content, 1);
    System.out.print(p);
    pat = "\\s(.+?)\n";
    p = Test.getSentence(pat, content, 1);
    System.out.print(p); }
    public static List getSentence(String pat,String content,int count) {
            String str = "";
            List p = new ArrayList();
            Pattern pattern=Pattern.compile(pat);
            Matcher matcher=pattern.matcher(content);
            
            while(matcher.find()){
             //allm = matcher.groupCount();        
                str = matcher.group(count);
                if(!p.contains(str)){
                 p.add(str);
                }
             } 
            return p;
        }
      

  6.   

    请问ghjhot(叉叉) (.+?) 表示什么? 谢谢