Python正则表达式学习(2)——字符集 [] 与 分组(capture group) ()

    xiaoxiao2021-04-17  43

    字符集:


    分组(捕获组):

    普通捕获组:(Expression)命名捕获组:(?<name>Expression)
    普通分组(普通捕获组):

    编号规则: 如果没有显式为捕获组命名,即没有使用命名捕获组,那么需要按数字顺序来访问所有捕获组。在只有普通捕获组的情况下,捕获组的编号是按照“(”出现的顺序,从左到右,从1开始进行编号的。


    命名分组(命名捕获组):

    编号规则: 命名捕获组通过显式命名,可以通过组名方便的访问到指定的组,而不需要去一个个的数编号,同时避免了在正则表达式扩展过程中,捕获组的增加或减少对引用结果导致的不可控。 不过容易忽略的是,命名捕获组也参与了编号的,在只有命名捕获组的情况下,捕获组的编号也是按照“(”出现的顺序,从左到右,从1开始进行编号的。


    普通捕获组与命名捕获组混合编号规则

    当一个正则表达式中,普通捕获组与命名捕获组混合出现时,捕获组的编号规则稍显复杂。对于其中的命名捕获组,随时都可以通过组名进行访问,而对于普通捕获组,则只能通过确定其编号后进行访问。

    混合方式的捕获组编号,首先按照普通捕获组中“(”出现的先后顺序,从左到右,从1开始进行编号,当普通捕获组编号完成后,再按命名捕获组中“(”出现的先后顺序,从左到右,接着普通捕获组的编号值继续进行编号。

    也就是先忽略命名捕获组,对普通捕获组进行编号,当普通捕获组完成编号后,再对命名捕获组进行编号。


    (?:...)


    参考资料:

    Python正则表达式指南

    正则基础之——捕获组(capture group)

    转载请注明原文地址: https://ju.6miu.com/read-674295.html

    最新回复(0)