Copyright 1995-2007 Sun Microsystems, Inc. All rights reserved.
Modified by N.M. Maclaren for Java 1.5 from:
http://java.sun.com/docs/books/tutorial/essential/regex/test_harness.html

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.lang.management.ThreadMXBean;
import java.lang.management.ManagementFactory;

public class timer {

    public static void main(String[] args){
      try {
        ThreadMXBean mxbean =
            ManagementFactory.getThreadMXBean();
        BufferedReader inputreader =
            new BufferedReader(new InputStreamReader(System.in));

        while (true) {

            System.out.format("%nEnter the repeat count: ");
            String string = inputreader.readLine();
            long repeat = (Long.valueOf(string)).longValue();

            System.out.format("%nEnter your regex: ");
            Pattern pattern = 
                Pattern.compile(inputreader.readLine());

            System.out.format("Enter input string: ");
            Matcher matcher =
                pattern.matcher(inputreader.readLine());

            boolean found = false;
            double time = mxbean.getCurrentThreadCpuTime(); 
            for (int i = 0; i < repeat; i++) found = matcher.find(0);
            time = 1.0e-6*(mxbean.getCurrentThreadCpuTime()-time)*1.0/repeat;
            if (found)
                System.out.println("Match found.");
            else
                System.out.println("No match found.");
            System.out.format("Time %.3f mS%n", time);
        }
      } catch (Exception e) {
          System.err.println("Quitting.");
      }
    }
}
