0

次のような文字を含む長い Javascript 文字列があります。

"aapaalaakaaiartaxealpyaaraa"

この文字列は、実際には 3 文字の単語の連鎖リストです。"aap","aal","aak","aai", "art", "axe","alp", "yaa" and "raa"

実際には、単語の長さが異なるこれらの文字列が多数あり、最大 2000 単語の長さになる可能性があるため、特定の文字列で始まるすべての単語を取得する最速の方法が必要です。したがって、それで始まるすべての単語を検索すると、次の"aa"ように返されます。

"aap","aal","aak" and "aai"  

正規表現でこれを行う方法はありますか? 3 文字の単語ごとにのみ一致することが非常に重要であるため、単語間の一致はカウントされ"aar"ませ"yaa""raa"

4

3 に答える 3

2

簡単な方法:

var results = [];

for (var i = 0; i < str.length; i += 3) {
    if (str.substring(i, i + 2) === "aa") {
        results.push(str.substring(i, i + 3));
    }
}

最速かどうかを尋ねるのではなく、まず十分に速いかどうかを確認してください。:)

于 2013-11-08T03:22:56.940 に答える
2

どうですか:

var str = 'aapaalaakaaiartaxealpyaaraa';
var pattern = /^aa/;

var result = str.match(/.{3}/g).filter(function(word) {
  return pattern.test(word);
});

console.log(result); //=> ["aap","aal","aak","aai"]
于 2013-11-08T03:24:36.750 に答える
1
"aapaalaakaaiartaxealpyaaraa".replace(/\w{3}|\w+/g,function(m){return m.match(/^aa/)?m+',':','}).split(',').filter(Boolean)
于 2013-11-08T03:29:24.663 に答える