Python 正则表达式匹配文件名blahblah_200901.csv(yyyymm)
我一直在修补正则表达式以匹配如下文件名:Python 正则表达式匹配文件名blahblah_200901.csv(yyyymm),python,regex,pattern-matching,match,filenames,Python,Regex,Pattern Matching,Match,Filenames,我一直在修补正则表达式以匹配如下文件名: blahblah_200901.csv (2009, January) blahblah_201512.csv (2015, December) 我有一个从年到年,从月到月传递的函数,所以我可以获取范围,但是我很难使用正确的正则表达式。月份字段由两位数字指定(即01到12) 上面代码中的正确x有问题。最简单的方法是根本不进行任何匹配;取而代之的是第一个和最后一个文件名,并确保该值介于2: start = 'blahblah_{:04}{:02}'.fo
blahblah_200901.csv (2009, January)
blahblah_201512.csv (2015, December)
我有一个从年到年,从月到月传递的函数,所以我可以获取范围,但是我很难使用正确的正则表达式。月份字段由两位数字指定(即01到12)
上面代码中的正确x有问题。最简单的方法是根本不进行任何匹配;取而代之的是第一个和最后一个文件名,并确保该值介于2:
start = 'blahblah_{:04}{:02}'.format(from_year, from_month)
end = 'blahblah_{:04}{:02}'.format(to_year, to_month)
for f in os.listdir('/path/dir'):
if start <= f <= end:
print(f)
start='blahblah{:04}{:02}'。格式(从年开始,从月开始)
end='blahblah{:04}{:02}'。格式(到年,到月)
对于os.listdir('/path/dir')中的f:
如果开始最简单的方法是根本不进行任何匹配;取而代之的是第一个和最后一个文件名,并确保该值介于2:
start = 'blahblah_{:04}{:02}'.format(from_year, from_month)
end = 'blahblah_{:04}{:02}'.format(to_year, to_month)
for f in os.listdir('/path/dir'):
if start <= f <= end:
print(f)
start='blahblah{:04}{:02}'。格式(从年开始,从月开始)
end='blahblah{:04}{:02}'。格式(到年,到月)
对于os.listdir('/path/dir')中的f:
如果startr“blahblah|(19|20)\d{2}(1[0-2]|0[1-9])”
将匹配20世纪和21世纪任何一年的月份(01-12)。如何通过我的年份和月份输入变量控制正则表达式?我希望能够匹配所有可能性的子集,其中子集由年(从,到)和月(从到)变量定义。覆盖日期范围的正则表达式模式将非常复杂。通过解析文件名并比较适当的位,所涉及的if-else逻辑将更容易、更清晰地解决…r“blahblah_389;(19|20)\d{2}(1[0-2]| 0[1-9])”
将匹配20世纪和21世纪任何一年的月份(01-12)。如何通过我的年份和月份输入变量控制正则表达式?我希望能够匹配所有可能性的子集,其中子集由年(从,到)和月(从到)变量定义。覆盖日期范围的正则表达式模式将非常复杂。通过解析文件名并比较适当的位,所涉及的if-else逻辑将更容易、更清晰地解决。。。
m = re.match('blahblah(\d{4})(\d{2})', f)
if m:
year = int(m.group(1))
month = int(m.group(2))
if (from_year, from_month) <= (year, month) <= (to_year, to_month):
print(f)