为啥 match 返回 None 而 findall 不返回?

Posted

技术标签:

【中文标题】为啥 match 返回 None 而 findall 不返回?【英文标题】:Why does match returns None while findall doesn't?为什么 match 返回 None 而 findall 不返回? 【发布时间】:2013-05-30 14:33:05 【问题描述】:

我有这个字符串:

s = "mage('Images/mpins/pin5_Jul1.png', new"

这是我的模式:

patt_img = r'\w+.png'

为什么

re.findall(patt_img,s)

返回

['pin5_Jul1.png']

但是match 返回None

m = re.match(patt_img,s)
>>> type(m)
<type 'NoneType'>`

【问题讨论】:

【参考方案1】:

因为match 只匹配从字符串的开头开始。

如果字符串开头的零个或多个字符与正则表达式模式匹配,则返回对应的MatchObject实例。

如果您想在字符串中找到匹配的任意位置,请改用search()

【讨论】:

嗯,是的。我一直忘记这件事。谢谢。

以上是关于为啥 match 返回 None 而 findall 不返回?的主要内容,如果未能解决你的问题,请参考以下文章

re模块

python--正则match_compile_search_findall用法

Python全栈--6.1-match-search-findall-group(s)的区别以及计算器实例

为啥使用正则表达式 finditer() 而不是 findall()

python 正则(re.compile()/re.findall())

Python全栈--6.1-match-search-findall-group(s)的区别以及计算器实例