这里有一个解决问题的方法
regex
看起来是一个大写字母,后面是两个小写字母。然后需要一个空格和两位数字:
import calendar
import re
# first one is empty string, we slice that
months = tuple(calendar.month_abbr)[1:] # ("Jan", "Feb", ...)
pattern = re.compile(r"[A-Z][a-z]{2} \d{2}")
result = [match.start()
for match in re.finditer(pattern, seq)
if match.group().startswith(months)]
这给了
[111]
对于问题中的字符串。
re.finditer
查找所有可能的匹配项并返回一个迭代器,迭代器在迭代时给出
re.Match
对象谁的
start
方法查询以获取匹配项的位置。自从
[A-Z][a-z]{2}
可以在几个月之外进行比赛,我们会检查比赛是否以任何一个月开始。
result
如果找不到匹配项,则将为空列表。