博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

正则表达式应用于文本操作--备忘1

Posted on 2006-08-16 01:20  魔佛之间  阅读(378)  评论(0编辑  收藏  举报
对于每一个已测PCB板,生成这样一个日志文本:
BLT, 608032008919,OK, 20060803, 06:15:25, 20, 00000000000000, 608035B61373, 20, 00, 00, 21.0, 1001, OK, 0000, 608032008919, 1002, OK, 0000, 150.343700, 1003, OK, 0000, 138, 1004, NG, 1031, COMM ERR,

要捕获的字段:
BLT, 608032008919,OK, 20060803, 06:15:25, 20, 00000000000000, 608035B61373, 20, 00, 00, 21.0, 1001, OK, 0000, 608032008919, 1002, OK, 0000, 150.343700, 1003, OK, 0000, 138, 1004, NG, 1031, COMM ERR ,

说明:
红色正体字为必须捕获字段,蓝色斜体字是可选的.
OK字段有两种可能,OK或者NG,OK表示Pass,NG表示Failed,如果为NG,蓝色斜体字会有不同的条目,每一个条目它又分为四个字段,其中淡红色为捕获字段,为简单起见,只捕获第一个为NG的条目.

捕获表达式:
(?<FIXTURE>[\w ]{2,}),\s*(?<FACTORYSN>\w{12}),\s*(?<STATUS>OK|NG),\s*(\w{8}),\s*([\:\w]{8})*,\s*\w{2},\s*\w{12,16},\s*(?<SERIALNUMBER>\w{8,12}),\s*\w{2},.{3,16},(.*?\s*(?<TESTNAME>\w{4}),\s*(NG),\s*(?<FAILCODE>\w{4,6}).{1,})*


文本2:
ESN,13210624404,07773818511060490560165640,607182005431,000000,CVAGA007572,NG,20060808,16:20:56,20,20060626220351,607185A17429,06,00,00,time,8001,OK,0000,84A21D94,8002,OK,0000,13210624404,8003,OK,0000,CVAGA007572,8004,OK,0000,607182005431,8005,NG,0005,V9200M10,8006,OK,0000,000000,8007,OK,0000,84A21D94,8008,OK,0000,07773818511060490560,8009,OK,0000,-,800A,NG,80A1,-

表达式:
(?<FIXTURE>[\w ]{2,}),\s*([\d ])*,\s*(?<AKEY>\w{26})*,\s*(?<FACTORYSN>\w{12}),\s*(?<SPC>\w{6})*,\s*(?<SERIALNUMBER>\w{10,12})*,\s*(?<STATUS>OK|NG),(?:.*?),\s*(?<SN>\w{10,12}),(.*?(?<TESTNAME>\w{4}),\s*(?:NG),\s*(?<FAILCODE>\w{4}).{1,})*