我有一个 DFA,但我不知道它是否接受状态。我只知道它接受的正则表达式。我试图找出它是否是接受状态,所以我查看了 DFA 的每个状态,我想将接受正则表达式与当前状态生成的单词进行比较。
所以我正在寻找可以将这个词与正则表达式进行比较并告诉我它是否匹配的东西,这样我就可以将 DFA 的这个状态标记为接受状态,然后进入另一个状态。我试图实现一些算法,但事实证明这对我来说是一个相当复杂的问题。你能给我建议吗?谢谢!
字母:{a,b,c}
正则表达式示例:ab.(a|c)*
我有一个 DFA,但我不知道它是否接受状态。我只知道它接受的正则表达式。我试图找出它是否是接受状态,所以我查看了 DFA 的每个状态,我想将接受正则表达式与当前状态生成的单词进行比较。
所以我正在寻找可以将这个词与正则表达式进行比较并告诉我它是否匹配的东西,这样我就可以将 DFA 的这个状态标记为接受状态,然后进入另一个状态。我试图实现一些算法,但事实证明这对我来说是一个相当复杂的问题。你能给我建议吗?谢谢!
字母:{a,b,c}
正则表达式示例:ab.(a|c)*
看看这个页面: http ://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
看起来你正在寻找的是:
boolean isMatch = Pattern.matches("ab.(a|c)*", str);
这是关于正则表达式模式匹配的 Java 教程:http: //docs.oracle.com/javase/tutorial/essential/regex/intro.html
您的问题是正则表达式还是 DFA?
这是您可能想要做的一些示例代码:
String state = WHATEVER THE DFA's state is
Pattern p = Pattern.compile("ab.(a|c)*");
Matcher m = p.matcher(state);
boolean isMatch = m.matches();