Python的re模块中,(?P=name)怎么使用?

描述问题

摘取官方文档如下(可以看到,简单带过)


(?P=name)
A backreference to a named group; it matches whatever text was matched by the earlier group named name.

然后,我搜索到了一个示例


<(?P<tag>[A-Z][A-Z0-9]*)[^>]*>.*?</(?P=tag)>.

在匹配对称的东西时有用,除此之外, 我想不到哪些场景下还会使用(?P=name)这个语法, 自己也用的少(但我隐约感觉自己并没有掌握它的用法)


能否给点启发?


上下文环境

  1. Python2/Python3


  2. Perl风格正则



附:


  1. 关于此语法的一些介绍: http://www.regular-expression...

已邀请:

和 分组 差不多,这叫 命名分组,就是给 分组 定个名字,方便以后引用。


举个栗子:
比如要匹配2个同样的字符
'(w)1'1是对(w)的引用。
这样有个弊端,就是分组很多,而且有嵌套的时候,很难分清
引用的是哪个分组。


用命名分组就直观多了。
'(?P<word>w)(?P=word)'

要回复讨论请先登录注册