python正则表达式中*(零次或多次)的含义

时间:2014-04-01 11:17:52

标签: python regex

为什么print(re.search("c*","bccc").group())什么都没得到?我认为它也会ccc*为零时或多次,c*可以匹配ccc,为什么无法在表达式{{1}中获取ccc }?

re.search("c*","bccc")

1 个答案:

答案 0 :(得分:4)

正则表达式从头开始扫描,re.search()返回第一个合法匹配。因为您要求零个或多个c个字符,所以空字符串是第一个合法匹配。

使用re.findall()查找所有非重叠的法律匹配:

>>> re.findall("c*","bccc")
['', 'ccc', '']

或添加锚点:

>>> re.search("c*$","bccc").group()
'ccc'

或使用+匹配1个或多个字符:

>>> re.search("c+","bccc").group()
'ccc'