微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PCRE2 - 匹配后缀匹配反向引用的每个单词

如何解决PCRE2 - 匹配后缀匹配反向引用的每个单词

给定下面的字符串,

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 上的多个子字符串,那么我使用的引擎也可以。

解决方法

(?:foo|\G(?!^))(\d+).*?(?=(\w+))\w+(?=\1\b)

Demo

可能是一些大小或性能优化。

@Niko Gambt,请说是否有任何优化对您很重要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?