Как получить искомую строку с re из строк - PullRequest
0 голосов
/ 24 августа 2018
 Tue Aug 21 17:02:26 2018 (gtgrhrthrhrhrthhhthrthrhrh)
 fjfpjpgporejpejgjr[eh[[[jh[j[ej[[ej[ej[e]]]]
 fkw[kgkeg[ekrk[ekg[kergk[erkg[eg[kg]
 Tue Aug 21 17:31:06 2018 ( ijwejfwfjwpfjwf[[few[jjfwfefwfeffeww]]
 fiowhfiweohewhfpwfhpfhpepwehfphpwhfpehfpwfh
 f,wfpewfefewgpwpg,pewgp
 Tue Aug 21 18:10:42 2018 ( reijpjfpjejferjfrejfpjefjer
 k[pfk[epkf[kr[ek[ke[gkk]
 r[g[keprkgpekg[rkg[pkg[ekg]

Выше приведен пример содержимого в текстовом файле. Я хочу извлечь строку с re. Как мне построить условие findall для достижения ожидаемого результата ниже? Я пробовал следующее:

  match=re.findall(r'[Tue\w]+2018$',data2)

но это не работает. Я понимаю, что $ является символом конца строки. Как я могу это сделать?

Ожидаемый результат:

  Tue Aug 21 17:02:26 2018
  Tue Aug 21 17:31:06 2018
  Tue Aug 21 18:10:42 2018
           .
           .
           .

1 Ответ

0 голосов
/ 24 августа 2018

Используйте шаблон:

^Tue.*?2018
  • ^ Утверждение начала строки.
  • Tue Литеральная подстрока.
  • .*? Соответствиеничего ленивого.
  • 2018 Соответствует литеральной подстроке.

Поскольку вы работаете с многострочной строкой и хотите сопоставить шаблон в начале строки, вы должны использовать re.MULTILINE flag.

import re
mystr="""
Tue Aug 21 17:02:26 2018 (gtgrhrthrhrhrthhhthrthrhrh)
fjfpjpgporejpejgjr[eh[[[jh[j[ej[[ej[ej[e]]]]
fkw[kgkeg[ekrk[ekg[kergk[erkg[eg[kg]
Tue Aug 21 17:31:06 2018 ( ijwejfwfjwpfjwf[[few[jjfwfefwfeffeww]]
fiowhfiweohewhfpwfhpfhpepwehfphpwhfpehfpwfh
f,wfpewfefewgpwpg,pewgp
Tue Aug 21 18:10:42 2018 ( reijpjfpjejferjfrejfpjefjer
k[pfk[epkf[kr[ek[ke[gkk]
r[g[keprkgpekg[rkg[pkg[ekg]
"""

print(re.findall(r'^Tue.*?2018',mystr,re.MULTILINE))

Печать:

['Tue Aug 21 17:02:26 2018', 'Tue Aug 21 17:31:06 2018', 'Tue Aug 21 18:10:42 2018']
...