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
0
A
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!