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)
完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值