我正在尝试制作一个函数,该函数获取一个文件夹名称和一个数字数组(该函数应返回哪个季节文件夹),并且我想检查是否存在一个具有正确季节编号的文件夹[Staffel = Season in German],但是我不仅拥有普通的英语电视节目,所以我的文件夹名为Staffel ==德国电视节目,如果是Eng,则命名为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
替换最后一个(?!\d)
。
在测试中,您使用了多行字符串输入,并且在代码中,测试了在2
之后末尾没有数字的单个字符串。 \D
是一种使用模式,必须有一个非数字字符,而(?!\d)
是一个否定的超前模式,这是一种仅要求下一个字符不能为数字的非使用模式。
另一种解决方案是用单词边界\D
替换最后一个\b
,但是您必须使用原始字符串文字来避免转义问题(即使用r'pattern'
)。