【问题标题】:Matching a string with a regex in Java在Java中将字符串与正则表达式匹配
【发布时间】:2012-11-26 15:14:06
【问题描述】:

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

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

字母:{a,b,c}

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

【问题讨论】:

  • 这和Java有什么关系?在我看来,这就像计算理论。
  • 我认为他正在寻找 Java 实现
  • 我在 Java 中实现了这个,因为我认为我可以使用它的正则表达式库

标签: java regex finite-automata automata dfa


【解决方案1】:

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

看来你要找的是:

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

【讨论】:

  • 正则表达式应该是一个字符串。请将代码也缩进到代码块中。
  • 我还没有将它包含在我的代码中,但到目前为止它似乎可以按照我的需要工作,谢谢! :)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 2013-10-18
    • 2022-01-17
    相关资源
    最近更新 更多