检查字符串是否是可能的正则表达式匹配的前缀

2024-05-20 14:37:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想遍历一个树结构,但只遍历那些匹配通配符表达式的部分,即la python glob,其中双星号表示“任意数量的子目录”。你知道吗

例如,假设我的通配符表达式是/*/foo/**/bar/。这将匹配/a/foo/bar/、/b/foo/note/bar/,但不匹配/a/bar/foo/bar/。你明白了。你知道吗

我的问题是,在遍历树结构时,我需要知道当前dir是否可能匹配通配符表达式作为前缀。因此,我确实希望遍历目录/a/,而不是/a/bar/,因为我知道后者永远不会匹配通配符表达式。你知道吗

当然,通配符表达式我将重写为正则表达式。你知道吗


Tags: 目录数量foo表达式dirbarlaglob
1条回答
网友
1楼 · 发布于 2024-05-20 14:37:08

对于初学者,请考虑以下代码。我假设路径和模式中的每个“目录”都是一对列表中的元素:

def traverse(pattern_list, path_list):
    if pattern_list[0] == '**':
        traverse_children(pattern_list, path_list[1:])
    if current_matches(pattern_list[0], path_list[0]):
        traverse_children(pattern_list[1:], path_list[1:])
        # Other things you might want to do in the case of a valid prefix

def current_matches(pattern_atom, path_atom):
    return pattern_atom in (path_atom, '*', '**')

相关问题 更多 >