
import java.io.*;
import org.apache.commons.io.IOUtils;

import org.apache.regexp.CharacterIterator;
import org.apache.regexp.RE;
import org.apache.regexp.ReaderCharacterIterator;


public class Test2{

	static String toString(File f) throws Exception{
		String text=null;

		InputStream fin=new FileInputStream(f);
		text=IOUtils.toString(fin,"UTF-8");
		fin.close();

		return text;
	}

	static String replace(String text){
		RE pat=new RE("(fire)fex");

		StringBuffer sb=new StringBuffer();

		StringReader sr=new StringReader(text);
		CharacterIterator in=new ReaderCharacterIterator(sr);
		
		int pointer=0;
		while(pat.match(in,pointer)){

			int start=pat.getParenStart(0);
			String part=in.substring(pointer,start);
			sb.append(part);

			String g1=text.substring(pat.getParenStart(1),pat.getParenEnd(1));
			sb.append(g1+"fox");

			pointer=pat.getParenEnd(0);
		}

		String tail=in.substring(pointer);
		sb.append( tail );

		sr.close();
		return sb.toString();
	}


	public static void main(String[] args){
		try{
			File f=new File(args[0]);
			String text=toString(f);
			System.out.print("src   :"+text);

			String result=replace(text);
			System.out.print("result:"+result);
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
	}

}

