常見問題
1)使用正規表示式雖說通吃,但有的時候直接使用字串的方法也是個不錯的選擇。
2)match()只會報告一次成功的匹配,並且匹配的位置必須是從字串的第乙個字元開始;search()函式遍歷整個字串,並報告它找到的第乙個匹配;
3)貪婪vs非貪婪:當重複乙個正規表示式時,如果使用a*,那麼結果是盡可能多的去匹配,如嘗試匹配一對對稱的界定符(html標誌中的尖括號),預設的貪婪模式就不適合。在這種情況下,使用費貪婪的限定符*?,+?,??或?,盡可能的匹配小的文字。
4)想要清晰,宜讀的正規表示式,需要指定re.verbose標誌,它允許編輯正規表示式的格式,使之更清晰;在正規表示式中的空白字元將被忽略;可以新增注釋,注釋從#開始到下一行;當使用三引號字串時,會使res的格式更整潔:
pat=re.compile(r"""
\s* #skip leading whitespace
(?p[^:]+) #header name
\s* : #whitespace,and a colon
(?p.*?) #the header's value -- *? used to
#lose the following training whitespace
\s*$ #training whitespace to end-of-line
""",re.verbose)
同樣的內容,下邊這個要難讀的多:
pat=re.compile(r"\s*(?p[^:]+)\s*:(?p.*?)\s*$")
python正規表示式元字元 正規表示式
字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...
Python 正規表示式
1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...
Python正規表示式
學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...