Python的re模块中,(?P=name)怎么使用?
PHP中文网
PHP中文网 2017-04-18 09:42:11
[Python讨论组]

描述问题

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

(?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]*)\b[^>]*>.*?</(?P=tag)>.

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

能否给点启发?

上下文环境

  1. Python2/Python3

  2. Perl风格正则

附:

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
大家讲道理

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号