我试图使一个函数,得到一个数组的文件夹名称和一个数字(哪个季节文件夹的函数应该返回),我想检查是否有一个文件夹与正确的季节号[斯塔费尔=季节在德国],但我不只是拥有简单英语电视节目,所以我的文件夹命名为Staffel ==德国电视节目,和季节,如果它的英语。
在本例中,文件夹将包含不同的文件夹(d)我正在查找(季节|它应该返回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
2条答案
按热度按时间kmpatx3s1#
您需要将最后一个
\D
替换为(?!\d)
。在测试中,您使用了多行字符串输入,而在代码中,您测试了
2
之后末尾没有数字的单个字符串。\D
是一个消耗模式,必须有一个非数字字符,而(?!\d)
是一个负前瞻,一个非消耗模式,只要求下一个字符不能是数字。另一个解决方案是用单词边界
\b
替换最后一个\D
,但必须使用原始字符串文字量以避免转义问题(即使用r'pattern'
)。jogvjijk2#
Google把我带到这里,但对我来说问题是我正在使用
compiled_regex = re.compile(myregex, re.IGNORECASE)
编译表达式,然后再次尝试使用re.IGNORECASE
标志进行搜索(compiled_regex.search(test_str, re.IGNORECASE
)。从
search
参数中删除额外的re.IGNORECASE
使它工作。以防像我这种情况的人又从谷歌登陆这里。