Python正则表达式,需要扩展名和包含字符串
我想使用regex监控符合这两个要求的文件(因为我使用的是watchdog RegexMatchingEventHandler):Python正则表达式,需要扩展名和包含字符串,python,regex,Python,Regex,我想使用regex监控符合这两个要求的文件(因为我使用的是watchdog RegexMatchingEventHandler): 必须以.bson或.bson.gz(又称扩展要求)结尾,如regexes=['\.bson.?'], 文件名必须包含2017 我希望使用正则表达式作为字符串输入,而不是完整的程序 有人能提供想法吗 谢谢,您可以使用如下正则表达式捕获它们: regex = r'.*2017.*\.bson(\.gz)?$' 说明:2017年前后的*匹配任何字符,可以重复任意次数(\
.bson
或.bson.gz
(又称扩展要求)结尾,如regexes=['\.bson.?'],
2017
谢谢,您可以使用如下正则表达式捕获它们:
regex = r'.*2017.*\.bson(\.gz)?$'
说明:2017年前后的*
匹配任何字符,可以重复任意次数(\.gz)?
指定.gz
是可选的
演示:
In [2]: fnames = ['sdfa2017sdfa.bson', 'asdf.bson', '2017aa.bson.gz']
In [3]: filtered_files = [f for f in fnames
if re.search(r'.*2017.*\.bson(\.gz)?$', f)]
In [4]: filtered_files
Out[4]: ['sdfa2017sdfa.bson', '2017aa.bson.gz']
我尝试了
print(重新匹配('.2017..bson(.gz)?,'2017.bson.gz')
,它返回None
…tryre.match(r'.*2017.\.bson(\.gz)?,'.2017..bson(.gz)?)
。您需要将正则表达式作为re.match
的第一个参数对不起,这也是错误的。。。尝试fnames=['sdfa2017sdfa.bson.it','asdf.bson','2017aa.bson.gz']
,它仍然返回'sdfa2017sdfa.bson.it
所以,它应该以.bson
或.bson.gz
结尾?在这种情况下,只需将^
添加到正则表达式的末尾,指定字符串应该结束。我编辑了答案以反映这一点。是的,以.bson
或.bson.gz
结尾。不,你的答案也不正确。。。现在它什么也不返回。