9.19 用正则表达式解析不定行文本

 

用正则表达式解析不定行文本数据。
日志文件由数量不定的多行组成,想要解析成结构化数据。部分日志内容如下:

imagepng

函数 A.regex(rs,Fi) 用正则表达式 rs 在序列 A 的字符串成员中查找匹配组,返回结果拼成以 Fi 为字段的序表。

脚本:

A
1 =file(“report.log”).read()
2 =A1.split(“Object Type:”).delete(1)
3 =A2.regex(“(.+)[\\s\\S]+left:(.+)[\\s\\S]+top:(.+)[\\s\\S]+right:(.+)[\\s\\S]+bottom:(.+)[\\s\\S]+Line Color:(.+)[\\s\\S]+Fill Color:\\t\\t(.+)[\\S\\s]+Link:(.+)[\\s\\S]+Type: (.+)[\\s\\S]+Condition Type:(.+)[\\s\\S]+Statement:\\s+(.+)[\\s\\S]+Link:(.+)[\\s\\S]+Type: (.+)[\\s(\\S]+Expression :(.+)”;ObjectType,left,top,right,bottom,lineColor,fillColor,ojbectLink,type,conditionType,statement,statementLink,statementType,lastExpress)
4 =file(“result.txt”).export@t(A3)

A1 读取日志文件,返回字符串
A2 将文本内容按标记 "Object Type:" 拆分成多条记录,并丢弃第一条记录
A3 对每个成员查找正则表达式匹配组,拼成记录
A4 将 A3 结果导出到 result.txt

运行结果:

ID ObjectType left top right bottom lineColor fillColor
1 Symbol 695 51 723 75 RGB (0 0 0) RGB (255 255 0)