为了账号安全,请及时绑定邮箱和手机立即绑定

Python:在一个正则表达式中多次使用相同的命名捕获组

Python:在一个正则表达式中多次使用相同的命名捕获组

临摹微笑 2023-03-08 15:07:16
是否有可能使用 Python 在一个正则表达式中多次重复命名捕获组?下面是正则表达式(这是不正确的,因为在同一个正则表达式中有重复的命名组)regex = r'''Use ((?P<phn_num>(?<=(Phone: ))\d{10})?(?P<lndln_num>(?<=(landline: ))\d{10})?) or you can also use((?P<phn_num>(?<=(Phone: ))\d{10})?(?P<lndln_num>(?<=(Landline: ))\d{10})?)'''输入字符串将是以下之一: 1. Use Phone: 1234567890 or you can also use Landline: 0012345678 2. Use Landline: 0012345678 or you can also use Phone: 1234567890目标是使一个正则表达式同时捕获phn_num和lndln_num作为命名捕获组,如果上述任何字符串作为输入给出。
查看完整描述

1 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

该模式未锚定,因此您可以使用交替|而不是使用两个命名的捕获组来匹配两个变体。

使用不区分大小写的匹配:

\bUse (?:Phone: (?P<phn_num>\d{10})|landline: (?P<lndln_num>\d{10}))
  • \bUse 匹配使用前面的单词边界并匹配空格

  • (?:交替的非捕获组

    • Phone: (?P<phn_num>\d{10})匹配phone: 和 10 位数字

    • |或者

    • landline: (?P<lndln_num>\d{10})匹配landline: 和 10 位数字

  • )

正则表达式演示


查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 240 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号