2012-04-11 7 views
0

私はPCRE |^/foo/(.*?)(?::(?:bar)?)?$|または|^/foo/(.*?)(?::bar)?:?$|を使用しています。これは交換になりますので、置き換え中に::barを最後から取り除きたいと考えています。私は2つがまったく同じではないことを知っていますが、ここではあまり重要ではありません。どの正規表現が速いですか

答えて

1

最初は:を確認するだけで済みますので、最初のものを使用します。 2番目の文字は、逆戻りする前に:batの最初の3文字と一致してから、:を再度チェックすることができます。また、2番目のものは:bar:と一致することができますが、最初のものは一致できません。実際の速度差は小さいでしょう。 2番目の方法は、次のように書かれたほうがよいでしょう。/^\/foo\/(.*?)(?::bar|:)?$/

デリミタとして正規表現のメタキャラクタを使用しないようにしてください。