回复 10楼 王咸美
可以编程取出网页的数据再写入DBF,不用这样转来转去转到头都晕。[此贴子已经被作者于2025-10-19 17:00编辑过]
CLEAR * 测试不同的文本格式 LOCAL lcTestText lcTestText = "快递费8.车费8.36 住宿费180,餐费-60 10月8日 车费8.36 住宿费180元,餐费60.63元" DO EnhancedRegExpExtract WITH lcTestText * 增强版正则表达式提取 PROCEDURE EnhancedRegExpExtract(tcString) LOCAL loRegEx, laMatches, loMatch LOCAL lcPattern * 更强大的正则表达式模式 lcPattern = "(" + ; "车费|餐费|住宿费|快递费|交通费|水电费|电话费|网络费|办公费|" + ; "材料费|印刷费|差旅费|会议费|培训费|招待费|福利费|其他" + ; ")" + ; "[::,.、\s]*" + ; && 各种可能的分隔符 "(-?\d+(?:\.\d+)?)" + ; && 金额 "(?:元)?" && 可选的单位 loRegEx = CREATEOBJECT("VBScript.RegExp") loRegEx.Pattern = lcPattern loRegEx.Global = .T. CREATE CURSOR 提取结果 (原始文本 C(100), 费用名称 C(10), 金额 N(10,2), 匹配位置 I) laMatches = loRegEx.Execute(tcString) ? "增强版正则表达式提取:" + CHR(13) + CHR(10) ? "输入文本: " + tcString + CHR(13) + CHR(10) ? "----------------------------------------" FOR EACH loMatch IN laMatches IF loMatch.SubMatches.Count >= 2 lcExpenseName = loMatch.SubMatches(0) lcAmount = loMatch.SubMatches(1) INSERT INTO 提取结果 VALUES ; (loMatch.Value, lcExpenseName, VAL(lcAmount), loMatch.FirstIndex) ? "匹配文本: " + loMatch.Value ? "费用名称: " + lcExpenseName + " 金额: " + lcAmount ? "---" ENDIF ENDFOR SELECT 提取结果 BROWSE TITLE "增强版正则表达式提取结果" * 按费用名称汇总 SELECT 费用名称, SUM(金额) as 总金额, COUNT(*) as 出现次数 ; FROM 提取结果 ; GROUP BY 费用名称 ; ORDER BY 总金额 DESC BROWSE TITLE "费用汇总统计" ENDPROC