Python正则表达式在开始时适用于match,但在结束时不适用

Python正则表达式在开始时适用于match,但在结束时不适用,python,regex,Python,Regex,我对python相当陌生,但已经使用正则表达式一段时间了。我在这里遗漏了什么: >>> import re >>> raceResuls = "2014 Results at:" >>> raceDate = "Saturday, December 5, 2015" >>> pattern = re.compile("(\d{4})") >>> pattern.match(raceResuls).group

我对python相当陌生,但已经使用正则表达式一段时间了。我在这里遗漏了什么:

>>> import re
>>> raceResuls = "2014 Results at:"
>>> raceDate = "Saturday, December 5, 2015"
>>> pattern = re.compile("(\d{4})")
>>> pattern.match(raceResuls).group(1)
'2014'
>>> pattern.match(raceDate).group(1)

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    pattern.match(raceDate).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
>>重新导入
>>>racesults=“2014年的结果:
>>>raceDate=“2015年12月5日星期六”
>>>pattern=re.compile(“(\d{4})”)
>>>模式匹配(比赛结果)组(1)
'2014'
>>>模式。匹配(比赛日期)。组(1)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
模式。匹配(比赛日期)。组(1)
AttributeError:“非类型”对象没有属性“组”
为什么字符串开头匹配,但结尾不匹配?我正在windows和linux上使用python 2.7。

您应该使用而不是。根据文件:

Python基于正则表达式提供了两种不同的基本操作:
re.match()
仅在字符串的开头检查匹配项,而
re.search()
则在字符串的任何地方检查匹配项(这是Perl默认的操作)


因此,当您使用
match
时,它与在正则表达式中使用相同(匹配字符串中第一个字符之前的位置)。

使用
search
而不是
match
,后者锚定在字符串的开头。@Maroun这就是诀窍,谢谢!如果你把它写进一个答案,我会把它标记为正确的。@XavierAshe,这不是一个把戏,定义
match
是只在搜索框中搜索@XavierAshe补充了参考答案,我强烈建议您浏览链接。