为什么空python正则表达式的返回值匹配?

时间:2010-12-16 20:16:15

标签: python regex

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

import re

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

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

4 个答案:

答案 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"

此外,空模式匹配整个字符串。