gpt4 book ai didi

javascript - 使用重叠搜索搜索重复子字符串的正则表达式

转载 作者:行者123 更新时间:2023-12-03 20:23:52 24 4
gpt4 key购买 nike

“您的目标是在输入中找到最长的重复子字符串(忽略大小写)并返回该字符串的小写版本。”
我正在解决一个小问题,并想使用正则表达式,但预期的输出重叠。
我的代码:

let x = "Is this thing on?"
console.log((x.match(/(.+)(?=.*\1)/gi)||[]).sort((a,b)=>b.length-a.length)[0].toLowerCase())

预期答案:“是吗”
我的回答:"is"
是否可以使用正则表达式解决这个问题?如果是这样,怎么做?

最佳答案

这里的问题是重复的 block 开始位置发生在第 1 组比赛结束之前。
您可以使用正则表达式做的唯一事情是捕获任何文本的所有重叠匹配,该文本紧接在此文本之前,紧随其后的是任何一个或多个文本,然后再次是该文本:

/(?=(.*)(?<=(?=.+\1)\1))./sgi
regex demo .
JavaScript 中的示例实现:

let x = "Is this thing on?"
console.log(
(Array.from(x.matchAll(/(?=(.*)(?<=(?=.+\1)\1))/gsi), x=>x[1])||[])
.sort((a,b)=>b.length-a.length)[0]
.toLowerCase()
)

关于javascript - 使用重叠搜索搜索重复子字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65505909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com