2017-11-05 4 views
1

文字列がcaaabです。この文字列のパターンaaの合計発生回数をカウントしたいと思います。それは2つでなければなりません。文字列内のパターンの合計発生回数をカウントする

[c**aa**ab] 
[ca**aa**b] 

私は(caaab'.match(/aa/g)||[]).lengthを使用していますが、それは唯一の1ない2を返しています。

javascriptでこれを行う方法。任意の解決策。

+1

を返すのだろうか? –

答えて

1

不足しているステップを消費しないため、マッチングを前向きに行うことができます。

console.log(('caaab'.match(/a(?=a)/g) || []).length);

+0

'(?<= aa)' –

+2

@SWalkerの背後には、実装されていないため、実際にはjavascriptではなく、肯定的な表情を使用することもできます。 –

+0

JavaScriptは肯定的な裏返しをサポートしていませんか? –

0

トリッキーな部分は、パターンの重なりです。

検索するパターンが正規表現ではなく、 の固定文字列の場合は、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.

関連する問題