Работая в Python 3.6, у меня есть список html файлов с префиксами даты. Я хотел бы вернуть все даты, поэтому я присоединяюсь к списку и использую какое-то регулярное выражение, например:
import re
snapshots = ['20180614_SII.html', '20180615_SII.html']
p = re.compile("(\d|^)\d*(?=_)")
snapshot_dates = p.findall(' '.join(snapshots))
snapshot_dates
- это список, ['2', '2']
, но я ожидаю ['20180614', '20180615']
. Демонстрация здесь: https://regexr.com/3r44o. Что мне не хватает?
Вы можете упростить свой шаблон, чтобы использовать \d+
вместо (\d|^)\d*
:
p = re.compile("\d+(?=_)")
print(p.findall(' '.join(snapshots)))
#['20180614', '20180615']
Однако в этом случае вам может не понадобиться regex
для достижения желаемого результата. Вместо этого вы можете просто разбить строку на _
:
print([x.split("_")[0] for x in snapshots])
#['20180614', '20180615']