#python #regex #pattern-matching
#python #регулярное выражение #сопоставление с шаблоном
Вопрос:
Итак, я изучал регулярное выражение на Python, и я довольно хорошо усвоил, что все еще есть что-то, чего я не могу понять. У меня есть список строк. В этом списке некоторые начинаются с «Что», а некоторые — с «Как», и оба они заканчиваются на ‘?’. Я хочу, чтобы вся подстрока списка строк начиналась с ‘Что’.
Вот шаблон, который я пробовал :
pat = 'what w w w ?'
но основная проблема заключается в том, что количество слов между ними не фиксировано. У некоторых их 3, а у некоторых даже 11-12, и если я использую предложение or или if в регулярном выражении, это становится огромным шаблоном без каких-либо результатов. Есть предложения о том, как решить такого рода проблемы?
Ответ №1:
Вам не нужен огонь.
l = ["What blah foo?","What bar?","How blah foo?","How bar?"]
print [x for x in l if x.startswith("What")]
['What blah foo?', 'What bar?']
Использование re:
l = ["What blah foo?","And What bar?","what bar?","How blah foo?","How bar?","What other foo","How other foo"]
for s in l:
check= re.findall("^What .*?",s,re.IGNORECASE) # find string starting with "What/what" and ending with "?"
if check:
print check[0]
What blah foo?
what bar?
Ответ №2:
Другой способ, использующий re и понимание списка:
list = ["What blah foo?","what bar?","How blah foo?","How bar?","another What?", "some what"]
print [x for x in list if re.match(r'^what.*?', x, re.I)]
[‘Что за бла-бла?’, ‘какой бар?’]