re命名捕獲

鏈接:http://blog.csdn.net/lxcnn/article/details/4146148
1. 用小括號"()"將正則表達式括起來,可以爲正則表達式分組。小括號可以嵌套(括號裏面可以有括號)。每個分組的編號是按照"("出現的順序,從左到右,從1開始進行編號的。
2. 捕獲組就是把正則表達式中子表達式匹配的內容,保存到內存中以數字編號或顯式命名的組裏,方便後面引用。
3. 捕獲組有兩種形式,一種是普通捕獲組,另一種是命名捕獲組,通常所說的捕獲組指的是普通捕獲組。
4. 正則表達式使用"命名捕獲"時,訪問特定分組會很方便。
這樣看起來,“命名捕獲”實際上是“普通捕獲”的語法糖。當然命名捕獲也支持嵌套了。

很顯然,一個正則表達式中,命名捕獲組的所有組名不可以重複。

下面是一個例子,這個例子很簡單用str.split()就可以解決,本例只是用來演示一下:

if __name__ == "__main__":
    import re
    content = "p15:00~09:15"
    pHHMM1 = r"(?P<HHMM1>(?P<pre1>[pP]{0,1})(?P<HH1>\d{2}):(?P<MM1>\d{2}))"
    pHHMM2 = r"(?P<HHMM2>(?P<pre2>[pP]{0,1})(?P<HH2>\d{2}):(?P<MM2>\d{2}))"
    pattern = "^" + pHHMM1 + "~" + pHHMM2 + "$"
    sreMatch = re.match(pattern, content)
    if not sreMatch:
        print("匹配失敗,即將退出...")
        exit(1)
    grpDict = sreMatch.groupdict()
    _l = ["HHMM1", "pre1", "HH1", "MM1", "HHMM2", "pre2", "HH2", "MM2"]
    for name in _l:
        print(name, "->", grpDict[name])
    exit(0)
完。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章