所以我一直在学习python中的正则表达式,而且我已经学到了很好的东西,还有一些我无法弄清楚的东西。我有一个字符串列表。在该列表中,一些以“What”开头,一些以“How”开头,它们都以'?'结尾。我希望String列表的所有子字符串都以'What'开头。
这是我尝试过的模式:
pat = 'what + \w + \w + \w + ?'
但主要问题是两者之间的字数不固定。有些有3个,有些甚至有11 - 12,如果我在正则表达式中使用or子句或if子句,它会变成一个没有结果的巨大模式。关于如何解决这类问题的任何建议?
答案 0 :(得分:0)
你不需要重新。
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?
答案 1 :(得分:0)
使用re和list comprehension的另一种方法:
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)]
['什么blah foo?','什么酒吧?']