数据应该是这样的:
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服务器上进行的,但是如果其他语言能够更容易地处理这些不一致的数据,我会向他们开放。
发布于 2013-03-11 13:41:41
看一看这个:
RegEx:^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}
在这里解释了演示:http://regex101.com/r/gG0wH8
如果修复了“拼写错误的值”问题,可以将其简化为:
否则,^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,}
会在|
部件中添加同样多的拼写错误。
为了让它起作用,我迷上了:
key
是id
之后和value
之前的一切value
在至少两行中断后结束您还应该删除正确的条目,然后重新检查文件,以检查是否有其他遗漏。
https://stackoverflow.com/questions/15315707
复制