我有一个巨大的固定宽度字符串,如下所示:
B100000DA3F19C Android 600 AND 2011-08-29 15:03:21.537
352a0D21ffd800000a3a95911801700e iPad 600 iOS 2011-08-29 19:35:12.753
.
.
.
我需要提取第一部分(id)和第四部分(设备类型 - “AND”或“iOS”)。第一列从0开始,到第51个位置结束所有行。第四部分从168开始,到所有线路结束时为171。每行的长度为244个字符。如果这很复杂,另一个选项是删除此文件中除id和设备类型之外的所有内容。这个单个文件有大约800K记录,测量为180mb,但Notepad ++似乎正在处理它。
我尝试过做一个SQL Server导入数据但是即使预览看起来很好,当数据插入到表中时,它也不准确。
到目前为止,我有以下内容,它给了我前51个字符 -
^(.{51}).*
如果我能保留id和设备类型并删除其余的正则表达式,那将是很棒的。
答案 0 :(得分:3)
如果你确定它始终处于那个位置,那么这是一个非常简单的方法:
^(.{51}).{117}(.{3})
括号是捕获(你得到的结果),括号是计数器。
编辑:使用以下内容明确丢弃该行的其余部分:
^(.{51}).{117}(.{3}).*$