Ich habe den ganzen Morgen lang versucht, die Regex richtig zu machen, und ich habe die Wand getroffen. In der folgenden Zeichenfolge möchte ich jeden folgenden Schrägstrich, der .com/<first_word>
mit Ausnahme von allen /
nach die URL folgt.Übereinstimmungen eines bestimmten Charakters nach einem positiven Lookbehind
$string = "http://example.com/foo/12/jacket Input/Output";
match------------------------^--^
Die Länge der Wörter zwischen den Schrägstrichen sollte keine Rolle spielen.
Regex: (?<=.com\/\w)(\/)
Ergebnisse:
$string = "http://example.com/foo/12/jacket Input/Output"; // no match
$string = "http://example.com/f/12/jacket Input/Output";
matches--------------------^
Regex: (?<=\/\w)(\/)
Ergebnisse:
$string = "http://example.com/foo/20/jacket Input/O/utput"; // misses the /'s in the URL
matches----------------------------------------^
$string = "http://example.com/f/2/jacket Input/O/utput"; // don't want the match between Input/Output
matches--------------------^-^--------------^
Da das Lookbehind kann keine Modifikatoren haben und muss eine Länge von Null Behauptung, die ich frage mich, ob ich gerade haben auf den falschen Weg gestolpert und sollte eine andere Regex-Kombination suchen.
Ist der positive Blick der richtige Weg, dies zu tun? Oder vermisse ich etwas anderes als viel Kaffee?
HINWEIS: getaggt mit PHP weil die Regex in jede der preg_*
Funktionen funktionieren sollte.
The'preg_match' Funktion gibt ein Spiel. Sie sagen, Sie müssen alle Zeichen übereinstimmen, die nach einem Muster vorhanden sind. Sie sollten 'preg_match_all' verwenden. –
Ich habe immer noch den Eindruck, dass es ein XY-Problem ist. Was versuchst du zu erreichen? Warum passen diese Schrägstriche? Sie könnten die URL url_parse und dann tun, was Sie wollen. Explodieren, z.B. –
Nein, es ist kein XY-Problem @ WiktorStribiżew, da die Regex in * any * der 'preg_ *' - Funktionen funktionieren sollte. –