Regex 用它替换可变数量的数字';总和
我需要找到一种方法,用方括号中的数字之和替换方括号中的n个数字,前提是这些括号彼此相邻;e、 g A[5][3]B[1.5]C[2.3][1.3][5] 变成: A[8]B[1.5]C[6] 我找到的最接近的正则表达式(首先用于匹配这些括号)如下所示:Regex 用它替换可变数量的数字';总和,regex,python-3.x,Regex,Python 3.x,我需要找到一种方法,用方括号中的数字之和替换方括号中的n个数字,前提是这些括号彼此相邻;e、 g A[5][3]B[1.5]C[2.3][1.3][5] 变成: A[8]B[1.5]C[6] 我找到的最接近的正则表达式(首先用于匹配这些括号)如下所示: r'(\[[^\[\]]*\]){2,}' 但是,对于这个正则表达式,我只匹配最后一次出现(在上一个示例中:[3]和[5]) 有人能帮我吗?你可以用 import re s = "A[5][3]B[1.5]C[2.3][-1.3][5]" rx
r'(\[[^\[\]]*\]){2,}'
但是,对于这个正则表达式,我只匹配最后一次出现(在上一个示例中:[3]和[5])
有人能帮我吗?你可以用
import re
s = "A[5][3]B[1.5]C[2.3][-1.3][5]"
rx = re.compile(r"(?:\[-?\d*\.?\d+]){2,}")
print( rx.sub(lambda m: "[{:g}]".format(sum([float(n) for n in m.group()[1:-1].split('][')])), s) )
# => A[8]B[1.5]C[6]
看
实际上,您甚至可以在正则表达式中尝试此代码,但请注意,[^][]
匹配除]
和[
之外的任何字符,而-?\d*\。\d+
匹配可选的-
,0+位,可选的
位,然后是1+位,从而匹配负数或正数和整数
在这里,(?:\[-?\d*\.?\d+]){2,}
匹配两个或多个重复的[]
s,替换中的lambda表达式去掉第一个和最后一个[
和]
并用][
拆分,以获得被转换为浮点然后求和的数字列表。{:g}str.format
中的
打印一个类似整数的整数,或者保持浮点值不变。是否可能重复?