次の行に沿って、Pythonでいくつかの正規表現の置換を行っています
\w\s+\w
多くの大きなドキュメントに。明らかに、正規表現を非貪欲に ( を使用して?
) 作成しても、一致するものは ( \w
!=として\s
) 変更されませんが、コードの実行速度は速くなりますか? 言い換えれば、非貪欲な正規表現を使用すると、Python は、ドキュメントの末尾からその文字に戻るのではなく、一致した最初の文字から順に動作しますか? それとも、これは単純な見方ですか?
次の行に沿って、Pythonでいくつかの正規表現の置換を行っています
\w\s+\w
多くの大きなドキュメントに。明らかに、正規表現を非貪欲に ( を使用して?
) 作成しても、一致するものは ( \w
!=として\s
) 変更されませんが、コードの実行速度は速くなりますか? 言い換えれば、非貪欲な正規表現を使用すると、Python は、ドキュメントの末尾からその文字に戻るのではなく、一致した最初の文字から順に動作しますか? それとも、これは単純な見方ですか?
これはあなたがほのめかしたパターンですか?
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 ミリ秒の差が生じます。