基于多个分隔符解析到数组

时间:2016-11-25 08:04:46

标签: javascript parsing pdf

我需要解析以下字符串(解析PDF,希望避免使用第三方软件包。)。

  

/ Type / Pages / MediaBox [0 0 612 792] / Count 9 / Kids [5 0 R 355 0 R]

我正在使用Javascript:

String.split(' ');

我想得到的输出是[   ' /类型&#39 ;,   ' /页&#39 ;,   ' /媒体框&#39 ;,   ' [0 0 612 792]',   ' /计数&#39 ;,   ' 9&#39 ;,   ' / Kids',' [5 0 R 355 0 R]'   ]

这导致:以下输出:['<<&#;;   ' /类型&#39 ;,   ' /页&#39 ;,   ' /媒体框&#39 ;,   ' [0&#39 ;,   ' 0&#39 ;,   ' 612&#39 ;,   ' 792]',

具体来说,我想划定一下['和']'。这样字符串就会读取[5,0,R,355,0,R]'

预期的最终结果是:

我试图看看我是否能用正则表达式解决这个问题,目前我被卡住了。

2 个答案:

答案 0 :(得分:2)

这个正则表达式应该照顾它

var input = "/Type /Pages /MediaBox [0 0 612 792] /Count 9 /Kids [ 5 0 R 355 0 R ]"
var result = input.match(/(\[[^\]]+\]|\S+)/g)
console.log(result)

作为解释,它将字符[和]([[^]] +]之间的每个字符组合在一起,或者不是空格的字符序列(\ S +)

答案 1 :(得分:1)

您可以使用将返回[...]组的正则表达式,然后您可以将spaces替换为comma。然后,您只需将其拆分为spaces

var s = "/Type /Pages /MediaBox [0 0 612 792] /Count 9 /Kids [ 5 0 R 355 0 R ]";

var arr_reg = /\[(.*?)(?:\]|$)/g;
s = s.replace(arr_reg, function(str){
  str = str.substring(1,str.length-1);
  return "[" + str.trim().replace(/ /g, ',') + "]"
});
console.log(s.split(' '))