【发布时间】:2017-02-08 02:25:40
【问题描述】:
我正在尝试创建一个函数,该函数获取一组文件夹名称和一个数字(该函数应返回哪个季节文件夹),并且我想检查是否有一个具有正确季节编号的文件夹 [Staffel = Season in German] 但我不只是拥有简单的英语电视节目,所以我的文件夹命名为 Staffel == German TV Show,如果它的 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匹配非数字字符。您的所有样本都没有 2 后跟非数字字符。 -
没有它会返回 Staffel 20,我该如何解决?我认为 \D 会做到这一点:D
-
听起来你想要一个单词边界 (
\b)。 -
用
(?!\d)替换\D -
感谢wiktor 成功了! :)