4

次の行に沿って、Pythonでいくつかの正規表現の置換を行っています

  \w\s+\w  

多くの大きなドキュメントに。明らかに、正規表現を非貪欲に ( を使用して?) 作成しても、一致するものは ( \w!=として\s) 変更されませんが、コードの実行速度は速くなりますか? 言い換えれば、非貪欲な正規表現を使用すると、Python は、ドキュメントの末尾からその文字に戻るのではなく、一致した最初の文字から順に動作しますか? それとも、これは単純な見方ですか?

4

1 に答える 1

2

これはあなたがほのめかしたパターンですか?

In [15]: s = 'some text   with \tspaces  between'

In [16]: timeit re.sub(r'(\w)(\s+)(\w)', '\\1 \\3', s)
10000 loops, best of 3: 30.5 us per loop

In [17]: timeit re.sub(r'(\w)(\s+?)(\w)', '\\1 \\3', s)
10000 loops, best of 3: 24.9 us per loop

ここの差はかなり小さいようです。非貪欲でわずか5マイクロ秒、

500 単語の lorem-ipsum を使用し、すべての単語の間に複数の空白が混在していると、8 ミリ秒の差が生じます。

于 2012-11-30T19:44:19.960 に答える