为什么空python regexp的返回值匹配?

Rod*_*Rod 4 python regex

将空字符串传递给正则表达式对象时,搜索结果是匹配对象而非None.应该是没有,因为没有什么可以匹配的?

import re

m = re.search("", "some text")
if m is None:
    print "Returned None"
else:
    print "Return a match"
Run Code Online (Sandbox Code Playgroud)

顺便说一句,使用特殊符号^$产生相同的结果.

gru*_*czy 12

空模式匹配字符串的任何部分.

检查一下:

import re

re.search("", "ffff")
<_sre.SRE_Match object at 0xb7166410>

re.search("", "ffff").start()
0

re.search("$", "ffff").start()
4
Run Code Online (Sandbox Code Playgroud)

添加$不会产生相同的结果.匹配结束,因为它是唯一可以的地方.