我找不到以下问题的解决方案,这让我发疯了。我需要找到一个字符串在另一个字符串中的每个位置。
这是我想出的:
function getMatchIndices(regex, str) {
let result = [];
let match;
let regex = new RegExp(regex, 'g');
while (match = regex.exec(str))
result.push(match.index);
return result;
}
const line = "aabaabbaababaababaaabaabaaabaabbabaababa";
const rule = 'aba';
const indices = getMatchIndices(new RegExp(rule, "g"), line);
console.log(indices);
现在,问题是,这与其他两个匹配项中间形成的aba匹配...
以下是说明问题的图片:
有什么想法吗?
答案 0 :(得分:2)
我意识到这不是Regex解决方案。因此,可能不是您所需要的。
希望有帮助。
function getMatchIndices(r, str) {
const indices = [];
str.split('').forEach((v,i) => {
if(r === str.substring(i,i+r.length)) {
indices.push(i);
}
});
return indices;
}
const line = "aabaabbaababaababaaabaabaaabaabbabaababa";
const rule = 'aba';
const indices = getMatchIndices(rule, line);
console.log(indices);