Je passe en revue tous les liens d'une page et compare leurs valeurs href au modèle suivant:
([^/]+)/([0-9]+)/([^/]+)
Le problème est qu'il existe 2 types de formats de lien sur la page:
1. /video/123/slug
2. /video/123
Numéro 1. obtient bien capturé avec le regex ci-dessus mais le 2e échoue. Je veux rendre le troisième morceau de l'expression régulière (le slug) facultatif afin que les deux formats de lien retournent vrai lorsqu'ils sont mis en correspondance contre l'expression régulière. Comment faire ça?
Réponses:
3 pour la réponse № 1Mettez le dernier bit entre crochets d'un groupe non capturant et ajoutez un ?
:
([^/]+)/([0-9]+)(?:/([^/]+))?
2 pour la réponse № 2
Utilisation ?
quantificateur, ce qui rend votre modèle facultatif. Il correspond à 0 ou 1 occurrence du motif.
De plus, vous devez regrouper la dernière barre oblique, avec votre dernière partie de votre expression régulière, dans un groupe non capturant.
([^/]+)/([0-9]+)(?:/([^/]+))?
0 pour la réponse № 3
Si vous ajoutez un ?
cela devrait rendre la dernière partie du modèle facultative.