文字列がcaaab
です。この文字列のパターンaa
の合計発生回数をカウントしたいと思います。それは2つでなければなりません。文字列内のパターンの合計発生回数をカウントする
[c**aa**ab]
[ca**aa**b]
私は(caaab'.match(/aa/g)||[]).length
を使用していますが、それは唯一の1
ない2
を返しています。
javascriptでこれを行う方法。任意の解決策。
文字列がcaaab
です。この文字列のパターンaa
の合計発生回数をカウントしたいと思います。それは2つでなければなりません。文字列内のパターンの合計発生回数をカウントする
[c**aa**ab]
[ca**aa**b]
私は(caaab'.match(/aa/g)||[]).length
を使用していますが、それは唯一の1
ない2
を返しています。
javascriptでこれを行う方法。任意の解決策。
不足しているステップを消費しないため、マッチングを前向きに行うことができます。
console.log(('caaab'.match(/a(?=a)/g) || []).length);
'(?<= aa)' –
@SWalkerの背後には、実装されていないため、実際にはjavascriptではなく、肯定的な表情を使用することもできます。 –
JavaScriptは肯定的な裏返しをサポートしていませんか? –
トリッキーな部分は、パターンの重なりです。
検索するパターンが正規表現ではなく、 の固定文字列の場合は、indexOf
を繰り返し呼び出すと、一致するたびに開始インデックスが に更新されます。この実装では
var count = function (s, t) {
var count = 0, index = 0;
while (true) {
index = s.indexOf(t, index);
if (index === -1) break;
count++;
index++;
}
return count;
}
、count('caaab', 'aa')
だから、あなたが何をしようとしている。2.
を返すのだろうか? –