【发布时间】:2021-01-17 13:01:42
【问题描述】:
我想使用类似正则表达式的语言来匹配变量字符串(在我的例子中,存储在图形数据库中的字符序列|单词|数字)。
我找到了一种实现 RegEx 引擎的方法: https://deniskyashif.com/2019/02/17/implementing-a-regular-expression-engine/
问题在于它与静态字符串匹配。我的情况就是我所说的变量字符串/序列。
F.e.假设我已经存储了以下序列:
谁;为什么;什么时候;在哪里;
请记住,我没有可用的序列(以便我可以遍历它们),它们被解构为图表。 (你可以把序列的接口想象成一个给定前缀预测/返回下一个字符的函数)
如果我匹配正则表达式:w* 它应该一个接一个地匹配/返回所有字符串/就像在回溯中一样/
如果我使用:whe* => 何时、何地
等等。
有没有办法修改 NFA、DFA 以适应可变字符串?
我刚刚开始探索实施 NFA,并认为改变必须在这里:
function search(nfa, word) { .... }
它必须是通过下一个预期的正则表达式符号/状态的搜索,即给定前一个字符串符号,下一个预测的字符串符号是否与预期的正则表达式符号匹配?
正则表达式应该“驱动”匹配,而不是字符串!它应该是可行的,因为正则表达式被解构为具有转换的有限状态..
你怎么看?
它们在图 db 中存储为树...f.e.可以表示为:
lvl5: (where:.)
lvl4: (wher:e), (when:.), (whom:.),
lvl3: (whe:r), (whe:n), (who:m), (who:.), (why:.)
lvl2: (wh:y) , (wh:o), (wh:e)
lvl1: (w:h)
lvl0: w h y o .
【问题讨论】:
标签: regex cypher graph-databases dfa nfa