0

私はPCREを使用しています。そうしないと|^/foo/(.*?)(?::(?:bar)?)?$||^/foo/(.*?)(?::bar)?:?$|これが置き換えになるので、置き換えを行っている間、最後から削除します。この2つはまったく同じではないことは知っていますが、ここではそれほど重要ではありません。::bar

4

1 に答える 1

1

一度だけチェックする必要があるため、最初のものを使用し:ます。:bat2 番目のものは、バックトラックする前にの最初の 3 文字に一致し、:再度チェックすることができます。また、2 番目のものは一致する可能性:bar:がありますが、最初のものは一致しません。実際の速度差はごくわずかです。2 番目の方法は次のように記述したほうがよいでしょう。/^\/foo\/(.*?)(?::bar|:)?$/

正規表現のメタ文字を区切り文字として使用しないようにしてください!

于 2012-06-27T05:00:01.030 に答える