在Java中使用正则表达式匹配字符串

时间:2012-12-08 17:43:50

标签: java regex finite-automata automata dfa

我有DFA,但我不知道它是否接受国家。我只知道它接受的正则表达式。我试图找出它是否接受状态,所以我查看了DFA的每个状态,我想比较接受正则表达式与当前状态生成的单词。

所以我正在寻找可以将这个词与正则表达式进行比较并告诉我它是否匹配的东西,所以我可以将DFA的这种状态标记为已接受的状态并转移到另一个状态。我试图实现一些算法,但事实证明这对我来说是一个非常复杂的问题。你能告诉我这件事吗?谢谢!

字母:{a,b,c}

正则表达式示例:ab。(a | c)*

2 个答案:

答案 0 :(得分:1)

看一下这个页面: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html

看起来你正在寻找的是:

boolean isMatch = Pattern.matches("ab.(a|c)*", str);

答案 1 :(得分:0)

这是关于正则表达式模式匹配的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();