不清楚在Java中怎么限定范围进行有效匹配,比如下面的文本,我怎么能够定位在EEE CNTS和EEE TAND之间,然后通过正则表达式进行有效匹配.
在Perl 中是可以用if(/EEE CNTS/../EEE TAND/)可以限定匹配范围.
再加上我要处理的文本比较大,大概有80MB左右.如果不限定范围的话,用模式匹配可能会匹配重复.请高手们帮忙回复一下,多谢.
文本内容如下:
EEE CNTS  
          00000 00036 00000 00000 00000 00000 00000 00000 00000 00000 00000
          00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
          00000
EEE TAND  000021120 000000004 000009110CCC CNTS  
          00000 00036 00000 00000 
          00000 00000 00000 00000
          00000
CCC TAND  000021120 000000004 000009110

解决方案 »

  1.   

    我的意思很简单,就想限定在一个范围内,进行区配,举个例子:
    我现在想定位在这一块内进行匹配下面的23组数据.现在明白了吧?
    EEE CNTS   
      00000 00036 00000 00000 00000 00000 00000 00000 00000 00000 00000
      00000 00000 00000 00000 00000 00000 00000 00000 00000 00000 00000
      00000
    EEE TAND 000021120 000000004 000009110
      

  2.   

    不太明白你的意思,如果用正则匹配的话:
    Pattern pattern = Pattern.compile("EEE CNTS(.*?)EEE TAND",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
    Matcher m = pattern.matcher(str);
    while (m.find()) {
    System.out.println(m.group(1));
    }
      

  3.   

    1.IO读取EEE CNTS 和 EEE TAND的数据进入内存
    2.处理内存中的数据PS:第一点有很多方法能实现.随便说一下 BufferedReader.readLine();  String.startsWith("EEE CNTS");  
      

  4.   

    需要处理的文件有开始,有结束,比较好分析
    以前写过 针对EXCEL 的 
    begin
    xxxxxxxx
    xxxxxxx
    endbegin
    xxxxxxxx
    xxxxxxx
    end这样类型的解析.
    毕竟数据量大了,不限定,会有很多问题...