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

来源:互联网 发布:最霸气的纹身 知乎 编辑:程序博客网 时间:2024/06/05 15:05

字符集:

这里写图片描述


分组(捕获组):

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

  • 普通分组(普通捕获组):

这里写图片描述
这里写图片描述

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

这里写图片描述

这里写图片描述


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

这里写图片描述
这里写图片描述

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

这里写图片描述

这里写图片描述


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

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

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

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

这里写图片描述

这里写图片描述


  • (?:...)

这里写图片描述


  • 参考资料:

Python正则表达式指南

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

0 0
原创粉丝点击