获取组匹配re.sub公司在Python中

2024-10-01 11:40:31 发布

您现在位置:Python中文网/ 问答频道 /正文

在Perl中,我可以同时进行替换并捕获组匹配。e、 g

my $string = "abcdef123";
$string =~ s/(\d+)//;
my $groupMatched = $1; # $groupMatched is 123

在Python中,我可以使用re.sub公司功能如下。但是,如果不调用另一个函数,我无法找到捕获\d+组匹配的方法重新匹配再做一个额外的手术。在

^{pr2}$

有人知道我如何将“\d+”匹配值作为一个独立的变量从相同的re.sub公司手术?我尝试了下面的命令,但它不起作用。在

print r'\1'

Tags: 方法函数命令功能restringismy
3条回答

您可以欺骗并将函数传递给re.sub

results = []
def capture_and_kill(match):
    results.append(match)
    return ""
string = "abcdef123"
string = re.sub("(\d+)", capture_and_kill, string)
results[0].group(1)
# => '123'

下面是在python3.6下测试的代码。在

test = "abcdef123"
resp = re.sub(r'\w+[A-Za-z](\d+)',r'\1',test)
print (resp)

123

您可以执行以下操作:

sub_str = re.search("(\d+)", str).group(1)

会找到“123”部分。在

然后替换它:

^{pr2}$

请注意,如果有多于[0-9]个序列,则需要使用findall并在所有匹配项上手动迭代。在

相关问题 更多 >