在JAVA中怎么只匹配文件中的以begin开始,以end 结束的一段内容?因为这个文件比较大,但是我需要的内容仅是文件中一小部分,我想把文件指针定位在begin和end 之间,然后用正则表达式按行匹配并输出.文件内容大概如下:
begin
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
endbegin
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
endbegin
xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
end 

解决方案 »

  1.   

    因为无法知道begin究竟在哪里,所以只有按行读。
    如果这个大文件是你自己生成的,建议改变生成方式,或者增加相关的描述性文件。如果不是你生成的,那就杯具了
      

  2.   

    定位到begin比较麻烦,据说JAVA中可以使用内存映射文件来操作大文件
      

  3.   

    逐行读取,逐行匹配,这样就会把其它内容也匹配到了,会有重复.这就是为啥我想要把匹配的范围缩在一个 begin和end 之间的原因
      

  4.   


    3楼的意思应该一行一行读了之后,先匹配begin啊,匹配到了begin之后再寻找你需要的内容。
      

  5.   

    应当一行一行读下去,遇到begin开头的,定位,然后开始往下读取,遇到end停止,截取这段长度·
      

  6.   

    begin和end这两个词是单独位于一行吗,如果是的话,逐行读取就可以了吧
      

  7.   

    一行一行读肯定是没有问题的,除非有这样的情况存在:begin
    xxxxxxxxxxxxxxx
    begin
    xxxxxxxxxxxxxxxx
    end
    xxxxxxxxxxxxxxxxx
    end
    xxxxxxxxxxxxxxxxx
      

  8.   

    其实要读begin和end间的东西很容易,一行一行读,碰到begin单独一行的,就开始读了,碰到end单独一行的,就结束了。
    你是要读vb的代码吧?要读方法体么?
    如果是要读方法体的话,仅以begin开头,以end结尾是不够的。begin-end有时候也作为流程控制语句的开始和结束的。所以你要想办法将这个begin定位到function definition之后。然后让其后所有的begin-end配对。在找到与第一个begin匹配的end的时候再结束。