我需要解析以下字符串(解析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]'
预期的最终结果是:
我试图看看我是否能用正则表达式解决这个问题,目前我被卡住了。
答案 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(' '))