将空字符串传递给正则表达式对象时,搜索结果是匹配对象而非None。它应该是无,因为没有什么可匹配的吗?
import re
m = re.search("", "some text")
if m is None:
print "Returned None"
else:
print "Return a match"
顺便说一句,使用特殊符号^
和$
会产生相同的结果。
答案 0 :(得分:12)
空模式匹配字符串的任何部分。
检查一下:
import re
re.search("", "ffff")
<_sre.SRE_Match object at 0xb7166410>
re.search("", "ffff").start()
0
re.search("$", "ffff").start()
4
添加$不会产生相同的结果。匹配结束,因为它是唯一的地方。
答案 1 :(得分:3)
以这种方式看待:搜索到的所有内容都匹配,因此搜索成功并获得匹配对象。
答案 2 :(得分:1)
这些正则表达式成功匹配0个文字字符。
可以将所有字符串视为在字符之间包含无限数量的空字符串:
'Foo' = '' + '' + ... + 'F' + '' + ... + '' + 'oo' + '' + ...
答案 3 :(得分:0)
您需要做的不是检查m是否为None,而是要检查m是否为True:
if m:
print "Found a match"
else:
print "No match"
此外,空模式匹配整个字符串。