parsing不一致的数据

数据应该是这样的:

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,这意味着手动更正每个文件是不可选的。 每个键的前缀数应该是正确的。 应该有一个值和下一个键之间的换行符。 每个值都应以string“value:”开头

现在,我一行一行地将每一行分类为键,值或垃圾。 然后我把这个数字parsing出来,并把数字,键和值存储在一个对象中。

数据格式不正确时出现问题。 以下是我迄今遇到的一些问题:

  • 关键和价值之间没有换行。
  • 在键或值的中间出现意外的换行符,这导致程序将每个键或值的一部分视为垃圾数据。
  • “价值”一词拼写错误。

我通过计算每行的前六个字符与主string“value:”之间的Levenstein距离来处理第三种情况。 我怎样才能解决其他两个问题?

如果有问题的话,parsing是在一个node.js服务器上进行的,但是如果他们可以更容易地使用这个不一致的数据,我可以接受其他语言。

看看这个:

正则expression式: ^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,} ^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}在这里解释demo: http ^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}

如果您修正了“拼写错误的值”问题,则可以将其简化为:
^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,} ^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,}否则会添加许多拼写错误| 在那RegEx部分。

为了这个工作我迷上了:

  • 行必须以数字和一个可选空格的点开始
  • key是在idvalue之前的所有东西
  • value在至less2个换行符后结束

您还应该删除正确的条目,然后重新检查该文件以检查是否还有其他东西丢失。