【问题标题】:RegEx that matches "variable" strings/sequences? + backtracking?匹配“可变”字符串/序列的正则表达式? + 回溯?
【发布时间】: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


    【解决方案1】:

    我不明白你的问题,但这个正则表达式可能是答案:

    <prefix>.*?\b
    

    其中&lt;prefix&gt;wwhe 等。

    这将匹配输入中以前缀开头的所有单词。

    无论您使用哪种语言,都应该有一种方法可以遍历为给定输入找到的所有匹配项。

    【讨论】:

    • 示例是插图.. 序列被分解并存储为图表。
    猜你喜欢
    • 2018-01-09
    • 2013-11-04
    • 1970-01-01
    • 2012-06-05
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多