Python regex重复\ d次

问题描述 投票:0回答:1

[使用python正则表达式,我试图匹配p的数量与模式中最先匹配的数字一样多。

样本输入

1pp
2p
3ppp
4ppppppppp

预期输出

1p
None
3ppp
4pppp

已尝试代码我尝试了以下代码,在这里我使用命名组,并为匹配的数字指定名称“ dig”,现在我想在重复dig中使用{m}。但是以下代码在pattern中找不到任何匹配项。

pattern = "2pppp"
reTriple = '((?P<dig>\d)p{(?P=dig)})'
regex = re.compile(reTriple,re.IGNORECASE)
matches = re.finditer(regex,pattern)

[我认为问题在于重复{m}期望为整数m,其中dig为字符串。但是我找不到一种方法来将一个int连接到字符串,同时保持它为int!我尝试了如下铸造:

reTrip = '((?P<dig>\d)p{%d}'%int('(?P=dig)')+')'

但出现以下错误:

ValueError: invalid literal for int() with base 10: '(?P=dig)'

我感到被困。有人可以指导。

python regex python-3.x repeat regex-group
1个回答
0
投票

类似的东西呢:

import re

def val_txt(txt):
    i = re.findall(r'\d+', txt)
    return re.findall(fr'\d+p{{{i}}}', txt)

print(val_txt('2p'))
© www.soinside.com 2019 - 2024. All rights reserved.