注:以下文章原文來自于Dr Charles Severance 的 《Python for Informatics》
11.1 正則表達式的字符匹配
我們可以用許多其它的特殊字符創建更加強大的正則表達式。最常用的特殊符號是可匹配任何字符的句號(".")。在以下的示例中,正則表達式”F..m:“將匹配”From:”,“Fxxm:",”F12m:“,或者”F!@m:“等類似字符串,因為表達式中間的句號可匹配任何字符。
import re hand = open('mbox-short.txt') for line in hand: line = line.rstrip() if re.search('^F..m:', line): print line 在正則表達式中組合使用表示一個字符任意重復次數的星號(”*")和加號("+")會使表達式特別強大。其中星號表示在查找的字符串中,匹配字符可以重復出現零次以上,而加號則是重復一次以上。
在下面的示例中,我們使用重復的通配符進一步縮小我們的查找范圍:
import re hand = open('mbox-short.txt') for line in hand: line = line.rstrip() if re.search('^From:.+@', line): print(line) 查找字符串“From:.+@”將成功匹配那些以“From:”開頭,接著跟著一個以上任意字符,再跟著一個“@”符的行。所以這會匹配類似以下的行:
From: stephen.marquard @uct.ac.za
這個".+"通配符擴展匹配所有從冒號到@符之間的所有字符。
From:.+@
加號和星號符的“一意孤行”的被認為是好的。例如以下的字符串將被外推至最后的@符而匹配:
From:stephen.marquard@uct.ac.za, csev@umich.edu, and cwen @iupui.edu
讓星號符和加號符不這么貪婪也是可以的,但是需要添加另外的符號。如何關閉它們貪婪的行為請參看詳細的文檔。



















