/* * provide names and student id numbers here */ package regex; import dk.brics.automaton.RegExp; import dk.brics.automaton.RunAutomaton; public class RegexTest { private final RunAutomaton r; public RegexTest(String regex) { System.out.println("regular expression = " + regex); r = new RunAutomaton(new RegExp(regex).toAutomaton()); } public long dfaMatch(String input, int index) { long start = System.nanoTime(); int length = r.run(input, index); long end = System.nanoTime(); if (length == -1) { System.out.println("No match found!"); } else { String s = input.substring(index, index + length); System.out.println("Found: " + s); } return end - start; } void runTest(String input, int index) { System.out.println("input string = " + input); System.out.println("index = " + index); long dfaMatchTime = dfaMatch(input, index); System.out.println("dfaMatchTime " + dfaMatchTime); } private void check(String input, boolean expectOk) { int length = r.run(input, 0); if (expectOk && length == -1 || !expectOk && length != -1) { throw new RuntimeException("Unexpected result for " + input); } } void assertOk(String input) { check(input, true); } void assertFail(String input) { check(input, false); } static void checkId() { RegexTest reId = new RegexTest("[a-z][a-z0-9]*"); reId.assertOk("id"); reId.assertOk("d0d"); reId.assertFail("Id"); reId.assertFail("0"); reId.assertFail("0d"); } public static void main(String[] args) { RegexTest exampleRegexTest = new RegexTest("aap"); exampleRegexTest.runTest("aap_df34_d asdf sdfd", 0); exampleRegexTest.runTest("a_a_pasdf sdfd", 0); checkId(); } }