这是数据的样子:
Some junk data
More junk data
1. fairly long key, all on one line
value: some other text with spaces and stuff
2. hey look! another long key. still on one line
value: a different value with some different information
每个文件中有几个,通常在二十到三十之间。键值对的总数超过20,000,这意味着手动更正每个文件是不可选的。每个键前面的数字应该正确递增。值和下一个键之间应该有一个换行符。每个值都应以字符串“value:”
开头现在,我逐行进行并将每一行分类为键,值或垃圾。然后我解析密钥中的数字并将数字,密钥和值存储在对象中。
数据格式不正确时会出现问题。以下是我到目前为止遇到的一些问题:
我通过计算每行前六个字符与主字符串“value:”之间的Levenstein距离来处理第三种情况。我该如何解决其他两个问题?
如果重要的话,解析是在node.js服务器上进行的,但如果他们可以更容易地处理这些不一致的数据,我会对其他语言开放。
答案 0 :(得分:0)
看看这个:
RegEx:^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}
在此解释演示:http://regex101.com/r/gG0wH8
如果您修正了“拼写错误的价值”问题,可以将其简化为:
^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,}
否则会在该RegEx部分中添加|
的拼写错误。
为此,我迷上了:
key
是id
之后和value
value
在至少2次换行后结束您还应删除正确的条目,然后重新检查该文件以检查是否还有其他内容。