2

Python 正規表現の一致に効率的に対抗する必要があります。Findall と finditer は機能しますが、多数の検索では遅くなります

これまでのところ、これがあります(大幅に簡略化されたバージョン):

import re
testItem = re.compile(r"var")
for matches in testItem.finditer(stringData):
    counter = counter + 1
return counter

このメソッドの複数のインスタンスを実行しています。試合自体は気にしません。私は単にカウンターを返したいだけです。

問題は、stringData が非常に大きな文字列であることです。正規表現自体は非常に単純です。

これを行うためのより効率的な方法についてアドバイスしてください。

前もって感謝します。

4

1 に答える 1

1

部分文字列を探しているだけであることを編集で示しているので、

stringData.count('var')

あなたによく役立つはずです。

もちろん、これは正規表現の他の多くの用途に一般化されていません! 残念ながら、少なくとも Python 3.4 では、PEP 424re.finditerによって形式化された「長さのヒント」をサポートしていないイテレータを返します。

sum(1 for _ in there.finditer(stringData))
于 2015-02-16T18:11:53.407 に答える