【发布时间】:2018-06-04 06:46:52
【问题描述】:
我有一个来自os.listdir() 的字符串列表,如下所示:
['foo',
'bar'
'backup_20180406'
...]
在这些条目中,我想获得与 "backup_YYYYMMDD" 模式匹配的条目。带有命名组的正则表达式将是
regex = r"BACKUP_(?P<date>\d+)"
我正在尝试创建一个包含上述 date only 的列表(又名.group('date')),但如果不解析字符串两次,我找不到方法。
res = [re.search(regex, x).group('date') for x in filter(r.match, os.listdir(folder))]
我确信我在这里遗漏了一些非常明显和简洁的东西,那么有没有更好的方法?
【问题讨论】:
-
也许
re.findall(r"(?i)BACKUP_(\d+)", " ".join(os.listdir(folder)))可以吗? -
@WiktorStribiżew 也想过,但我不喜欢
join位。再说一次,使用奇怪的字符作为分隔符并调整正则表达式应该使它非常稳定 -
你需要一些临时变量;没有办法解决它。列表推导不适合这种事情。
-
@Ev.Kounis,记得选择答案
标签: python regex performance