我有一棵嵌套哈希树,每个哈希树都包含一个名称,就像带有文件的嵌套目录一样。如果我在运行时获得外国提供的正则表达式(我不想分析),我如何才能找到在哪些子树中查找匹配项。匹配的路径可能是以下形式
"$x{name}/$x{subdir}{name}/$x{subdir}{subdir}{name}"
但是,因为可能有数以千计的哈希,我只想在这两个部分匹配时尝试它:
"$x{name}"
"$x{name}/$x{subdir}{name}"
或者更好的是,如果第 1 部分匹配,则尝试直接继续使用第 2 部分,然后使用第 3 部分,有点像/\G.../g
,除了正则表达式来自其他地方。而且我需要回溯以查看所有其他部分匹配的子目录。
PCRE g_match_info_is_partial_match听起来正是我正在寻找的东西,但尽管该名称中有“Perl”,但即使 5.18 源似乎也不包含此内容。我实际上想要向后兼容 5.8.0 的东西。
这个问题的背景是将正则表达式语法引入makepp。我们基本上是为模式这样做的,但由于它们的语法很简单,这很容易。请注意,我们缓存了我们找到的文件,并且可以处理出现的更多文件。这使 makepp 能够匹配可能稍后构建的文件,因为它也将规则的输出放入树中。