要解决这个问题,我们首先需要明确几个关键点:
1. `regexp asc evaluate`:这似乎是指使用正则表达式来评估某些内容。
2. 杂乱计算记录:这指的是一些无序或者格式不统一的计算数据。
3. 计算出结果:需要从这些杂乱的数据中提取有用的信息,并计算出最终的结果。
由于没有具体的例子和数据格式,我将提供一个通用的Python代码示例,该示例使用正则表达式来处理一些假设的杂乱计算记录,并尝试计算出结果。
假设我们的杂乱计算记录是这样的格式:
```
3 + 5 = 8
7 2 = 14
-4 + 10 = 6
```
我们将使用正则表达式来提取这些记录中的数字和运算符,然后计算结果。
下面是Python代码实现:
```python
import re
# 假设的杂乱计算记录字符串
records = """
3 + 5 = 8
7 2 = 14
-4 + 10 = 6
9 - 3 = 6
"""
# 正则表达式,用于匹配数字和运算符
pattern = re.compile(r'(-?d+) (+|-|) (-?d+) = (-?d+)')
# 存储计算结果
results = []
# 使用正则表达式查找所有匹配项
for match in pattern.finditer(records):
num1, op
相关内容:
网友求助SOS:如何将含杂乱内容的计算过程记录,快速计算出结果?由于这位网友的要求比较特殊,我们简化数据源,用案例进行讲解。
如下图所示:A2单元格是计算过程的记录:8.7(长)*3.6(宽)-6.1(长)*2(宽)+2,不仅含有原始的文本核心算式:8.7*3.6-6.1*2+2,并且在数字后面还标注了带括号的长或宽的信息。并且括号格式还不一致,有些是中文全角的,有些是英文半角的,这些特殊处理细节都对B2单元格的计算结果增加了难度。
A2单元格的理论计算过程与结果是,我们想要得到的就是B2的结果:=8.7*3.6-6.1*2+2=21.12

下面拆解公式,分步骤讲解作用原理。
第一步:统一括号格式
我们输入公式:=ASC(A2)
全角的1个左/右括号占2个字符的长度,半角的1个左/右括号占1个字符的长度,这个特点我们用肉眼可以观察到。
统一格式后的效果:"8.7(长)*3.6(宽)-6.1(长)*2(宽)+2"

第二步:删除括号及括号的内容
我们外面嵌套REGEXP正则表达式函数:=REGEXP(ASC(A2),"(.*)")
但是却出现了下面错误的结果:(长)*3.6(宽)-6.1(长)*2(宽)

原因REGEXP正则表达式函数默认的是“贪婪模式”,它会尽可能多的匹配内容,它会将:“8.7(长)*3.6(宽)-6.1(长)*2(宽)+2”原始数据中,第一个左括号与最后一个右括号中间的内容全部提取出来:“(长)*3.6(宽)-6.1(长)*2(宽)”
所以我们需要完善正则表达式:=REGEXP(ASC(A2),"(.*?)")
在*后面加上一个?号,?是“贪婪模式”向“懒惰模式”转换的开关,这样转换为懒惰模式后,它会尽可能少的匹配括号里面的内容,只会分别匹配单独的每个括号及括号里面的内容。
最后提取结果以数组溢出的方式显示在一行多个单元格中:{"(长)","(宽)","(长)","(宽)"}

继续完善正则公式:=REGEXP(ASC(A2),"(.*?)",2,)
将第三参数由默认的省略或0修改为2,表示“替换”模式,第4参数表示替换为什么,我们跳过或设置为"",表示替换为空值。

第三步:计算文本算式
最外面嵌套EVALUATE函数:=EVALUATE(REGEXP(ASC(A2),"(.*?)",2,))
EVALUATE函数是常用的宏表函数之一,用于对以文字表示的一个公式或表达式求值,并返回结果。
该函数不能在微软Office Excel单元格中直接使用,需要使用自定义名称的方法间接调用。
使用WPS表格的朋友可以不用定义名称,直接在工作表中输入公式即可。

如下图所示:A2单元格是计算过程的记录:8.7(长)*3.6(宽)-6.1(长)*2(宽)+2,不仅含有原始的文本核心算式:8.7*3.6-6.1*2+2,并且在数字后面还标注了带括号的长或宽的信息。并且括号格式还不一致,有些是中文全角的,有些是英文半角的,这些特殊处理细节都对B2单元格的计算结果增加了难度。
A2单元格的理论计算过程与结果是,我们想要得到的就是B2的结果:=8.7*3.6-6.1*2+2=21.12

下面拆解公式,分步骤讲解作用原理。
第一步:统一括号格式
我们输入公式:=ASC(A2)
全角的1个左/右括号占2个字符的长度,半角的1个左/右括号占1个字符的长度,这个特点我们用肉眼可以观察到。
ASC函数可以将全角字符转换为半角字符。所以全角的左/右括号就转换为了半角的左/右括号。
统一格式后的效果:"8.7(长)*3.6(宽)-6.1(长)*2(宽)+2"

第二步:删除括号及括号的内容
我们外面嵌套REGEXP正则表达式函数:=REGEXP(ASC(A2),"(.*)")
:表示转义符。
(:将左括号转换为真正的标点符号左括号
):将右括号转换为真正的标点符号右括号.*:表示0个或多个连续的字符。
(.*):表示括号及括号里的任意内容。
但是却出现了下面错误的结果:(长)*3.6(宽)-6.1(长)*2(宽)

原因REGEXP正则表达式函数默认的是“贪婪模式”,它会尽可能多的匹配内容,它会将:“8.7(长)*3.6(宽)-6.1(长)*2(宽)+2”原始数据中,第一个左括号与最后一个右括号中间的内容全部提取出来:“(长)*3.6(宽)-6.1(长)*2(宽)”
所以我们需要完善正则表达式:=REGEXP(ASC(A2),"(.*?)")
在*后面加上一个?号,?是“贪婪模式”向“懒惰模式”转换的开关,这样转换为懒惰模式后,它会尽可能少的匹配括号里面的内容,只会分别匹配单独的每个括号及括号里面的内容。
最后提取结果以数组溢出的方式显示在一行多个单元格中:{"(长)","(宽)","(长)","(宽)"}

继续完善正则公式:=REGEXP(ASC(A2),"(.*?)",2,)
=REGEXP(ASC(A2),"(.*?)",2,"")
将第三参数由默认的省略或0修改为2,表示“替换”模式,第4参数表示替换为什么,我们跳过或设置为"",表示替换为空值。
即将查找出来的4组括号及括号里面的内容,替换为空,等价于删除4组括号及括号里面的内容。

第三步:计算文本算式
最外面嵌套EVALUATE函数:=EVALUATE(REGEXP(ASC(A2),"(.*?)",2,))
EVALUATE函数是常用的宏表函数之一,用于对以文字表示的一个公式或表达式求值,并返回结果。
该函数不能在微软Office Excel单元格中直接使用,需要使用自定义名称的方法间接调用。
使用WPS表格的朋友可以不用定义名称,直接在工作表中输入公式即可。
