上一章講到了各種字符組,與它相關的還有一個特殊的元字符:點號.。一般文檔都說,點號可以匹配"任意字符",點號確實可以匹配"任意字符",常見的數字、字母、各種符號都可以匹配,如例2-10所示。
例2-10 點號.的匹配
re.search(r"^.$", "a") != None # => True re.search(r"^.$", "0") != None # => True re.search(r"^.$", "*") != None # => True
有一個字符不能由點號匹配,就是換行符\n。這個字符平時看不見,卻存在,而且在處理時並不能忽略(下一章會給出具體的例子)。
如果非要匹配"任意字符",有兩種辦法:可以指定使用單行匹配模式,在這種模式下,點號可以匹配換行符(?84);或者使用上一章的介紹"自制"通配字符組[\s\S](也可以使用[\d\D]或[\w\W]),正好涵蓋了所有字符。例2-11清楚地說明,這兩個辦法都可以匹配換行符。
例2-11 換行符的匹配
re.search(r"^.$", "\n") != None # => False #單行模式 re.search(r"(?s)^.$", "\n") != None # => True #自制“通配字符組” re.search(r"^[\s\S]$", "\n") != None # => True