2012-04-11 10 views
0

Ich benutze PCRE |^/foo/(.*?)(?::(?:bar)?)?$| oder |^/foo/(.*?)(?::bar)?:?$| dies wird ein Ersatz sein, so dass wir : und :bar vom Ende ausziehen wollen, während Sie den Ersatz tun. Ich weiß, dass die beiden nicht genau gleich sind, aber es spielt hier keine Rolle.Welche Regexp ist schneller

Antwort

1

Ich würde die erste verwenden, wie es nur für : einmal überprüfen muss. Der zweite könnte die ersten drei Zeichen von :bat vor dem Zurückverfolgen übereinstimmen, dann erneut auf : überprüfen. Auch der zweite könnte :bar: entsprechen, während der erste nicht. Der tatsächliche Geschwindigkeitsunterschied wäre winzig. Der zweite Weg wäre besser geschrieben als /^\/foo\/(.*?)(?::bar|:)?$/

Versuchen Sie nicht, Regex-Metazeichen als Trennzeichen zu verwenden!