=SUM(--REGEXEXTRACT(A2,"(?<=白菜)\d+(?=元)",1))
如果要整表输出,就可以使用上次刚讲的map()函数:
=MAP(A2:A3,LAMBDA(x,SUM(--REGEXEXTRACT(x,"(?<=白菜)\d+(?=元)",1))))
如果使用"\k"参数,则可以将公式简化为:
=SUM(--REGEXEXTRACT(A2,"白菜\K\d+(?=元)",1))
这里的"白菜\K"表示白菜之后,但是不包括“白菜”本身。
以上案例中,里面出现的数字都是整数,如果其中有小数,则上述公式就要作相应的修改了,要加上"\.*\d+",
转义字符"\"加上".",表示"."本身,"\.*"中后面的"*",表示前面的字符(小数点)出现0次或者1次,因为可能的情况是,有些是整数,有些是小数,后面的"\d+"指的是小字点后面的整数。
因此,公式修改为:
=SUM(--REGEXEXTRACT(A2,"白菜\K\d+\.*\d+(?=元)",1))
=SUM(--REGEXEXTRACT(A2,"(?<=白菜)\d+\.*\d+(?=元)",1))

