这种情况比较复杂,用正则表达式可能会比较麻烦,而且据说正则表达式的效率也不是很好。
不如用 Tokenizer 来分解。
首先肯定是以行为单位,然后用 Tokenizer 分析每一行的数据,再分析每一个 token

解决方案 »

  1.   

    谢谢楼上的朋友!我最初的想法也是想这样做的,分解成token,比较,主要是感觉麻烦的,因为不只是提取key-value,
    还有考虑到,有的key具有同义词,比如最后几行的RX,RA,RT,RL都认为是同一个key,而且有的值value分成几行,并不是严格已key-value格式出现的,所以还得解决value和那个key对应正确的问题。我现在正在写这个算法,我只是想有没有比这种实现更好,更简便些的方法或算法!非常感谢!!
      

  2.   

    如果换行符不是分隔符的话,那么可以把所有行都直接连接起来,当然这样比较耗资源。
    你可以每取一行,进行一次 token 分析。
    把最后一个 token 和下面一条连接起来再进行 token 分析
    因为你这个情况实在有些复杂,所以用正则表达式实在不太合适。
      

  3.   

    BufferedReader in = new BufferedReader(
                        new FileReader("lib/ori_src.txt"));
                PrintWriter out = new PrintWriter(
                        new File("lib/result.txt"));
                StringTokenizer token;
                String content = null;
                while((content = in.readLine()) != null){
                    token = new StringTokenizer(content,"*");
                    while(token.hasMoreTokens()){
                        out.println(token.nextToken());
                    }
                }
                in.close();
                out.close();
      

  4.   

    非常感谢  jamesfancy()边城狂人(James Fancy)及各位的关注!
    其实那些数据是此Web页面上抽取下来的,里面还包含有别的字符(如打印符,换行符等),而且使用string.trim()也不能去掉那些表面看来是空格的特殊字符,感觉还是有些麻烦的!可以仔细看一下那些数据:我本来在每个数据Entry后打印四个星“****”,而抽取出的数据有的包含六七个星,估计那是非打印字符惹得祸吧!这该如何解决?