用 python 正则表达式从旧字符串计算出的新字符串替换子字符串

substitute substring with a new one calculated from the old one with python regular expression

是否可以使用 Python 正则表达式将子字符串替换为使用原始子字符串的新子字符串 "calculated"?

举个例子:

假设我有子串userX40,我想获取子串40,转换为int,乘以2,然后放回原来的字符串中:所以最终结果将是 user80.

我可以在不同的段落中这样做,例如:

import re
in_str = "userX40"
original_num = int(re.search("\d+", in_str).group())
out_str = re.search("(.*)[^\d]", lll).group() + str(original_num*2)

有没有办法在一个命令中使用 re.sub 来完成?

是的,re.sub 是可能的。提供一个可调用对象,将匹配对象转换为 int,将其相乘,然后转换回字符串。

>>> s = "userX40"
>>> re.sub(r"\d+", lambda x: str(2*int(x.group())), s)
'userX80'