首页 >社区问答列表 >正则 re.findall(r'x?','xy123'),x 重复 0 次是什么意思?

正则 re.findall(r'x?','xy123'),x 重复 0 次是什么意思?

>>> re.findall(r'xy','xy123') #从源文本 xy123 中找 xy 刚好找到一个。 
['xy'] 
>>> re.findall(r'x','xy123') #从源文本 xy123 中找 x 刚好找到一个。 
['x'] 
>>> re.findall(r'x?','xy123') 
['x', '', '', '', '', ''] 

最后这个实在无法理解, 
从中找 x 重复 0 次或者 1 次,如果 x 重复 1 次,得到 x, 
关键是重复 0 次怎么理解?输出的结果里有 5 个表示空东西的东西,但是源文本 xy123 中没有它啊?!

  • 面对疾风吧
  • 面对疾风吧    2016-11-07 14:42:351楼

    不要理解为"重复",理解为"匹配"。
    匹配零次,就是匹配一个空集合,显然,任何"东西"都不属于一个空集合。所以 x?,就是匹配字母 x 一次,显然这是跟单独一个 x 是一样的效果,这是因为问号后面没别的条件了

    +0添加回复

  • 回复