Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比赛对芬德尔_Python_Regex - Fatal编程技术网

Python 比赛对芬德尔

Python 比赛对芬德尔,python,regex,Python,Regex,为什么,re.match返回None对象,而类似的re.findall返回非空结果 我正在解析电子邮件主题。问题是 subject = "=?UTF-8?B?0JLQsNGI0LUg0YHQvtC+0LHRidC10L3QuNC1INC90LUg0LTQvtGB0YLQsNCy0LvQtdC90L4=?=. Mail failure." 我想知道为什么 re.match(“邮件失败”,主题,re.I)返回对应对象的None对象 re.findall(“邮件失败”,主题,re.I)返回列表中匹配

为什么,
re.match
返回
None
对象,而类似的
re.findall
返回非空结果

我正在解析电子邮件主题。问题是

subject = "=?UTF-8?B?0JLQsNGI0LUg0YHQvtC+0LHRidC10L3QuNC1INC90LUg0LTQvtGB0YLQsNCy0LvQtdC90L4=?=. Mail failure."
我想知道为什么

re.match(“邮件失败”,主题,re.I)
返回对应对象的None对象

re.findall(“邮件失败”,主题,re.I)
返回列表中匹配的字符串
['mail failure']

我的想法有什么不对?

与字符串开头的模式匹配。但是,在字符串中的任何位置搜索模式的引用

如果您有模式
“邮件失败”
和字符串:

subject = "=?UTF-8?B?0JLQsNGI0LUg0YHQvtC+0LHRidC10L3QuNC1INC90LUg0LTQvtGB0YLQsNCy0LvQtdC90L4=?=. Mail failure."

re.match
将返回
None
,因为字符串不是以
邮件失败“
开头的
re.findall
though将返回一个匹配项,因为字符串包含
“邮件失败”

它就在文档中: 您需要的是
re.search

请注意,即使在多行模式下,re.match()也只会在字符串的开头匹配,而不会在每行的开头匹配


我一直认为“^mail failure”从一开始就与字符串中的“mail failure”完全匹配。好的,因此
re.match
的正确模式应该是
“*mail failure”
?@Al_-是的,该模式将返回一个匹配对象。@Al_-另外,仅供参考,模式
“^mail failure”
告诉Python在字符串的开头匹配
mail failure
,而不是字符串中的任何地方<代码>^当这样使用时意味着“在开始”。我明白了。从
re.match
的定义来看,
re.match(“邮件失败”)
类似于
re.match(“邮件失败”)
。然而,
re.search(“邮件失败”)
显然不同于
re.search(“邮件失败”)
。谢谢你的澄清。