我想在基于DFA的正则表达式匹配器中实现“单词边界”匹配。有人能告诉我如何做吗?
为了提供一些背景,我目前正在使用 "dk.brics.automaton" 库,但它不支持断言(例如\b,单词边界)。我需要使用基于DFA的引擎,因为我的主要目标实际上是确定正则表达式的等价性,而不是执行实际的匹配。
此外,下面这个问题的答案似乎表明这是可能的:基于DFA的正则表达式匹配 - 如何获取所有匹配项?,其中说:
非常感谢任何有关如何实际实现这一点的说明。
为了提供一些背景,我目前正在使用 "dk.brics.automaton" 库,但它不支持断言(例如\b,单词边界)。我需要使用基于DFA的引擎,因为我的主要目标实际上是确定正则表达式的等价性,而不是执行实际的匹配。
此外,下面这个问题的答案似乎表明这是可能的:基于DFA的正则表达式匹配 - 如何获取所有匹配项?,其中说:
然而,我无法完全理解这是什么意思。 它是否建议只能使用一种特殊类型的 epsilon 转换来查看其端点并且只能在其端点满足断言时遍历它,或者可以通过某种方式配置“正常”的 epsilon 转换来完成? 如果我需要这些“特殊”类型的 epsilon 转换,那么如何对其进行确定化(即转换为标准 DFA)?"同样,我们通过添加具有特殊指令的 epsilon 转换到模拟器来管理此过程。如果断言通过,则状态指针继续,否则将被丢弃。"
非常感谢任何有关如何实际实现这一点的说明。
\b
的条件,则会失败。因此,您需要在某个地方保留“前一个字符”。 - andrew cooke