我想在基于 DFA 的正则表达式匹配器中实现“单词边界”匹配。有人能告诉我这是怎么做到的吗?
提供一些背景知识,我目前正在使用“dk.brics.automaton”库,但它不支持断言(例如\b
,单词边界)。我需要使用基于 DFA 的引擎,因为我的主要目标实际上是确定正则表达式的等价性,而不是进行实际匹配。
此外,以下问题的答案似乎表明这是可能的: 基于 DFA 的正则表达式匹配 - 如何获取所有匹配项? 通过说
“同样,我们通过向模拟器添加带有特殊指令的 epsilon 转换来管理这一点。如果断言通过,则状态指针继续,否则将被丢弃。”
然而,我不太明白这意味着什么。是否暗示它只能通过查看其端点的特殊类型的 epsilon 转换来完成,并且只有在其端点满足断言时才能被遍历,还是可以通过以某种方式配置的“正常”epsilon 转换来完成?如果我需要这些“特殊”类型的 epsilon 转换,那么如何确定这些(即转换为标准 DFA)?
非常感谢任何关于如何实际实现这一点的描述的指针。