2

假设这是我们的文本:

text = 'After 1992 , the winter and summer Olympics will be held two years apart , with the revised schedule beginning with the winter games in 1994 and the summer games in 1996 . ) Now , Mr. Pilson -- a former college basketball player who says a good negotiator needs `` a level of focus and intellectual attention  similar to a good athlete-s is facing the consequences of his own aggressiveness . Next month , talks will begin on two coveted CBS contracts'
print re.search(r'(\w+ |\W+ ){0,4}1992( \W+| \w+){4}', text).group(0)

输出: 1992年之后的冬天和

但是这个给了我:

print re.search(r'(\w+ |\W+ ){0,4}1992( \W+| \w+){0,4}', text).group(0)

输出: 1992 年之后,

这对我来说似乎很奇怪,因为为什么第二个正则表达式不贪婪?

这个比其他的有点奇怪:

print re.search(r'(\w+ |\W+ ){0,4}summer( \W+| \w+){0,4}', text).group(0)

输出, 冬夏 奥运会 将 举行

问题

1-第一个和第二个有什么区别。对我来说,它应该给出相同的文本,因为唯一的区别是{0,4}如果{4}给出长字符串,{0,4}应该给出相同的字符串,因为正则表达式是贪婪的。

2-问题可能与标点符号有关,因为第三个示例{0,4}{4}..

我很困惑。

4

1 回答 1

4
于 2012-11-12T19:16:49.710 回答