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

是否有可能使用 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作为命名捕获组,如果上述任何字符串作为输入给出。


临摹微笑
浏览 242回答 1
1回答

不负相思意

该模式未锚定,因此您可以使用交替|而不是使用两个命名的捕获组来匹配两个变体。使用不区分大小写的匹配:\bUse&nbsp;(?:Phone:&nbsp;(?P<phn_num>\d{10})|landline:&nbsp;(?P<lndln_num>\d{10}))\bUse 匹配使用前面的单词边界并匹配空格(?:交替的非捕获组Phone: (?P<phn_num>\d{10})匹配phone: 和 10 位数字|或者landline: (?P<lndln_num>\d{10})匹配landline: 和 10 位数字)正则表达式演示
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python