问题描述
给定下面的字符串,
const attachmentData = [{name: 'Suman Baidh',attachment: ["123","456"]},{name: 'John Sigma',attachment: ["789","101112"]},{name: 'Binay',attachment: ["131415","161718","192021"]}]
const attachmentDetail = [{"id":"123",details:{"cost":10,"quantity":20}},{"id":"456",details: {"cost":15,"quantity":28}},{"id":"789",details:{"cost":4,"quantity":9}},{"id":"101112",details:{"cost":40,"quantity":2}},{"id":"131415",details:{"cost":12,{"id":"161718",details:{"cost":45,{"id":"192021",details:{"cost":120,"quantity":1}}];
function customMerge(data,attachments) {
const hashById = attachments.reduce((acc,ele) => {
acc[ele.id] = ele;
return acc;
},{});
return data.reduce((acc,{attachment,name}) => {
return acc.concat(attachment.map(id => ({name,id,details: hashById[id].details})));
},[]);
}
console.log(customMerge(attachmentData,attachmentDetail))
目标是匹配每个单词,使得后缀是一个与 ay bee ceefooh deefoo38 ee 37 ef gee38 aitch 38 eye19 jay38 kay 99 el88 em38 en 29 ou38 38 pee 12 q38 arr 999 esss 555
之后出现的数字相匹配的数字(在本例中恰好是 38)。
只有一个以 foo
开头并以数字结尾的子字符串。预期的匹配都存在于所述子字符串之后。
预期匹配:
foo
我已经尝试过 gee38
jay38
em38
ou38
q38
和 foo(\d+).*?(\w+\1)\b
,但它们无法全部匹配,因为它们匹配第一个 (foo(\d+).*(\w+\1)\b
) 或最后一个 (gee38
).
是否有可能只用一个正则表达式就可以匹配所有内容,重要的是,只需一次运行?
我使用的 PCRE2 引擎的行为方式与 https://regex101.com/r/uFEDOE/1 相同。因此,如果正则表达式可以匹配 regex101 上的多个子字符串,那么我使用的引擎也可以。