正则表达式可以在 regex101.com 上运行,但不能在 python 中运行

2024-01-14

我正在尝试创建一个函数,该函数获取文件夹名称数组和数字(该函数应返回哪个季节文件夹),并且我想检查是否存在具有正确季节编号的文件夹 [Staffel = 德语季节] 但是我不只是拥有简单的英语电视节目,因此我的文件夹名为 Staffel == 德国电视节目,如果是英语则为 Season。

在此示例中,文件夹将包含不同的文件夹 (d) 我正在寻找 (Season|Staffel) 2,它应该返回 Season 02,因为它出现在数组中的 Staffel 2 之前

def findFolderbyNumber(path, number):
    d = getFolders(path)
    d = ['Staffel 1','Staffel 20','Season 02', 'Staffel 2', 'Season 3']
    number = 2
    for obj in d:
        pattern = '(.*)(Staffel|Season)((\s?)*)((0?)*)('+str(number)+')(\D)(.*)'
        m = re.match(pattern, obj)
        print(obj, end='\tMatch = ')
        print(m)
        if(m):
            return obj
    return 0


Staffel 1   Match = None
Staffel 20  Match = None
Season 02   Match = None
Staffel 2   Match = None
Season 3    Match = None

您需要更换最后一个\D with (?!\d).

在您的测试中,您使用了多行字符串输入,并且在代码中,您测试了末尾没有数字的单个字符串2. \D是一个消费模式,必须有一个非数字字符,并且(?!\d)是负向前瞻,一种非消耗模式,只要求下一个字符不能是数字。

另一种解决方案是替换最后一个\D有单词边界\b,但是您必须使用原始字符串文字来避免转义问题(即使用r'pattern').

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式可以在 regex101.com 上运行,但不能在 python 中运行 的相关文章

随机推荐