解释为什么re.compile("([abc])+")。search(' abc')。groups()--------> (' C&#39 ;,)

时间:2015-09-13 03:08:15

标签: python regex python-3.x

我不明白为什么会得到这个结果,

>>> import re
>>> re.compile("([abc])+").search('abc').groups()
('c',)
>>>  

任何人都可以像this一样逐步解释这个正则表达式的工作机制吗?

1 个答案:

答案 0 :(得分:1)

([abc])+是一个贪婪的正则表达式。即组+之后,组将重复整个捕获组一次或多次,这将导致仅捕获最后匹配的字符。您可以考虑这个(a)+简单示例。如果连续放置多个a,此正则表达式将匹配所有a并仅捕获最后aa。如果输入只包含一个a,则会捕获a,如果a未连续放置,则每个([abc]+)&#39 ; s必须被捕获。

如果您使用此+,则abc将仅重复一次或多次字符类。所以这将捕获整个(a+)。这种情况的一个简单示例是re.search(regex, string).groups()

最后init(playerType: PlayerType) { self.playerType = playerType spriteTexture = SKTexture(imageNamed: playerType.simpleDescription()) sprite = SKSpriteNode(texture: spriteTexture) sprite.name = playerCategoryName sprite.zPosition = 10 } 会返回所有捕获的字符。