將空字符串傳遞給正則表達式對象時,搜索的結果是匹配對象an not None。它應該是None,因爲沒有什麼可匹配的?爲什麼空的Python正則表達式的返回值搜索匹配?
import re
m = re.search("", "some text")
if m is None:
print "Returned None"
else:
print "Return a match"
順便提及,使用特殊符號^
和$
產生相同的結果。
將空字符串傳遞給正則表達式對象時,搜索的結果是匹配對象an not None。它應該是None,因爲沒有什麼可匹配的?爲什麼空的Python正則表達式的返回值搜索匹配?
import re
m = re.search("", "some text")
if m is None:
print "Returned None"
else:
print "Return a match"
順便提及,使用特殊符號^
和$
產生相同的結果。
空模式匹配字符串的任何部分。
檢查:
import re
re.search("", "ffff")
<_sre.SRE_Match object at 0xb7166410>
re.search("", "ffff").start()
0
re.search("$", "ffff").start()
4
添加$不會產生相同的結果。比賽結束了,因爲它是唯一的地方。
你需要什麼做的是不檢查,如果m爲無,而要檢查是否m爲真:
if m:
print "Found a match"
else:
print "No match"
另外,空模式整個字符串匹配。
那些正則表達式已成功匹配0個文字字符。
所有字符串可以被認爲包含空字符串的字符之間的無限數量:
'Foo' = '' + '' + ... + 'F' + '' + ... + '' + 'oo' + '' + ...
看它是這樣的:您搜索的是匹配的一切,因此搜索成功,你會得到一個匹配對象。
如果m是'None',那麼'bool(m)'是'False'。他應該檢查,「m」是否爲「無」。 – gruszczy 2010-12-16 20:22:45
@gruszczy不會說是否有匹配,雖然 – 2010-12-16 20:23:45
In [5]:bool(re.search(「」,「ffff」)) Out [5]:True In [6]:bool re.search(「$」,「ffff」)) 輸出[6]:True – gruszczy 2010-12-16 20:25:19