如何从结果正则表达式javascript获取更多详细信息

如何从结果正则表达式javascript获取更多详细信息,javascript,regex,parsing,Javascript,Regex,Parsing,这里有一个测试字符串: apple 01x100 02x200 03x150 banana 01x50 02 03x10 我想要的结果是: { "apple" : { "100":["01"], "200":["02"], "150":["03"] }, "banana" : {"50":["01"], "10":["02","03"]} 我试图在javascript中使用正则表达式来解析字符串。正则表达式字符串 /(apple|banana)((?:\s)*(?:(?:[0-9]+)

这里有一个测试字符串:

apple 01x100 02x200 03x150
banana 01x50 02 03x10
我想要的结果是:

{ "apple" : { "100":["01"], "200":["02"], "150":["03"] }, 
  "banana" : {"50":["01"], "10":["02","03"]}
我试图在javascript中使用正则表达式来解析字符串。正则表达式字符串

/(apple|banana)((?:\s)*(?:(?:[0-9]+)(?:\s)*)*x(?:[0-9])+)+/gi
结果:

Match 1
Full match  0-26    `apple 01x100 02x200 03x150`
Group 1.    0-5 `apple`
Group 2.    19-26   ` 03x150`

Match 2
Full match  27-48   `banana 01x50 02 03x10`
Group 1.    27-33   `banana`
Group 2.    39-48   ` 02 03x10`

如您所见,在比赛1-第2组中,只有03x150显示,01x100和02x200不显示。在全场比赛中,它展示了一切。有没有办法解决这个问题并得到我想要的结果?谢谢

我想这会对你有用:

const输入=`
苹果01x100 02x200 03x150
香蕉01x50 02 03x10
柠檬02x12 15 16 17x21
`
常量解析=数据=>{
常量obj={}
常量findFruits=/(\w+)\s+(.*)/g
常量findMore=/\s*([\d\s]+)x(\d+)/g
让临时工
while(temp=findFruits.exec(数据)){
常量tempObj=obj[temp[1]]={}
常数temp2=温度[2]
while(temp=findMore.exec(temp2)){
tempObj[temp[2]]=temp[1]。拆分(“”)
}
}
返回obj
}
const out=parse(输入)

console.log(out)
在最终输出中,
02
与键
10
关联的规则是什么?01表示质量类型,100表示数量。此外,02表示质量,10表示数量。在这种情况下,香蕉类型02和03的数量相同