Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 解析不一致数据_Javascript_Regex_Node.js_Parsing - Fatal编程技术网

Javascript 解析不一致数据

Javascript 解析不一致数据,javascript,regex,node.js,parsing,Javascript,Regex,Node.js,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到30之间

数据应该是这样的:

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到30之间。键值对的总数超过20000,这意味着手动更正每个文件是不可取的。每个键前面的数字应该正确递增。在一个值和下面的键之间应该有一条换行符。每个值都应以字符串“value:”开头

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

数据格式不正确时会出现问题。以下是我迄今为止遇到的几个问题:

  • 键和值之间没有换行符
  • 键或值中间的一个意外的换行符,导致程序将每个键或值的一部分视为垃圾数据。
  • “值”一词拼写错误
我通过计算每行的前六个字符与主字符串“value:”之间的Levenstein距离来处理第三种情况。我如何解决其他两个问题

如果重要的话,解析是在node.js服务器上进行的,但是如果其他语言能够更轻松地处理这些不一致的数据,我愿意使用这些语言。

看看这个:

正则表达式:
^(\d+)\?(.+?)(?:值| vlaue | balue | valie):?(.+?)[\n\r]{2,}
此处解释演示:

如果您解决了“拼写错误的值”问题,您可以将其简化为:
^(\d+)\?(.+?)值:?(.+?)[\n\r]{2,}
否则,在该正则表达式部分添加与
|
相同数量的拼写错误

为了让它发挥作用,我迷上了:

  • 行必须以数字和带可选空格的点开头
  • id
    之后和
    值之前的所有内容
  • 在至少两次换行后结束

您还应该删除正确的条目,然后重新检查该文件以检查是否缺少任何其他内容。

这很有效,谢谢!我想“value”的拼写错误是很少见的,所以每次出现时我都可以修改它。