gpt4 book ai didi

javascript - 正则表达式重复搜索而不 chop

转载 作者:行者123 更新时间:2023-11-30 08:42:30 25 4
gpt4 key购买 nike

我想查找包含一个字符、后跟另一个字符、然后是第一个字符的字符串。

例如,在“abab”中我想要“aba”和“bab”

/([a-z])[a-z]{1}\1/g

但是,执行此脚本只会给我第一个结果(特别是我使用的是 javascript)

"abab".match(/([a-z])[a-z]{1}\1/g)
["aba"]

因为这给了我两个而不是三个(应该得到“aba”、“bab”、“bcb”)

"ababcb".match(/([a-z])[a-z]{1}\1/g)
["aba", "bcb"]

我相信这是因为正则表达式在 chop 的字符串上重复自身,所以它会找到第一个匹配项,然后在剩余的字符串上执行正则表达式。我怎样才能避免这种情况并获得所有可能性?

最佳答案

您可以使用 Positive Lookahead 来捕获:

var re = /(?=(([a-z])[a-z]\2))./g, matches = [];
while (m = re.exec('abab')) {
matches.push(m[1]);
}
console.log(matches) //=> [ 'aba', 'bab' ]

var re = /(?=(([a-z])[a-z]\2))./g, matches = [];
while (m = re.exec('ababcb')) {
matches.push(m[1]);
}
console.log(matches) //=> [ 'aba', 'bab', 'bcb' ]

关于javascript - 正则表达式重复搜索而不 chop ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25044518/

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