如何从结果正则表达式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的数量相同