sub替换如何加入组名

sub替换如何加入组名

首先有几个疑问,如下图

定义组名:?<name>

引用\k<name>

在上一章节分组在匹配的时候 (?P<year>\d{4}) 这样

为什么之前匹配可以?<name>这么写分组这就得?P<year>, 加一个P非常不解

http://img1.sycdn.imooc.com//climg/5eccab000908341e05470199.jpg

问题2,在sub替换位置,我想通过制定组名的方式

str = "hello word"
p = re.compile(r'(?P<one>\w+) (?P<two>\w+)')
rest2 = p.sub('\P<one> \P<two>',str)

这里'\P<one> \P<two>'就会报错, 请问这里的P是不是又该换成其他的字母 , 又该如何去写?




正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好:

  1. 更正一下上一条回答,经过查阅相关资料发现sub()也是可以对命名分组进行替换的,需要使用\g<组名>来替换。例如下图。

    http://img1.sycdn.imooc.com//climg/5ecceb2009fb020804200353.jpg

  2. P是在Python中的re模块里使用的,只针对Python,只要在Python中使用re为分组命名就要使用 ?\P<name> 这种形式。其他语言参考下图。

    http://img1.sycdn.imooc.com//climg/5eccec6f09bd3e2a10760280.jpg

    而在线正则匹配使用\k来反向引用。

如果解决了你的疑惑,请采纳,祝学习愉快~


  • qq_浮沉_34 提问者 #1
    老师,您的这个是怎么查的,搜索那些关键字
    2020-05-26 18:29:45
  • 好帮手慕觉浅 回复 提问者 qq_浮沉_34 #2
    同学你好:百度搜索"正则命名分组"。
    2020-05-26 18:41:35
好帮手慕觉浅 2020-05-26 17:52:18

同学你好:

  1. 在在线正则匹配中不需要加P,写成?<name>即可。而在re模块的使用中需要加P,需要写成 (?P<year>\d{4})这种形式。

  2. sub()方法没有提供定制组名的功能,可以还使用\1、\2等代表第几个组。

    http://img1.sycdn.imooc.com//climg/5ecce6bd09b2d31104140278.jpg

如果解决了你的疑惑,请采纳,祝学习愉快~


  • 提问者 qq_浮沉_34 #1
    老师,麻烦回复一下,前几个问题的追问
    2020-05-26 17:53:28
  • 提问者 qq_浮沉_34 #2
    老师,您的意思是只要在re模块,需要制定组名,那么就得加P,对吗
    2020-05-26 17:55:53
  • 提问者 qq_浮沉_34 #3
    在这个P只是针对python吗
    2020-05-26 17:57:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师