Vous avez raison, le /
au début sont délimiteurs motif. Permet de supprimer ceux pour la simplicité
^\/node?(?:\/(\d+)(?:\.\.(\d+))?)?
Le (?:...)
est un groupe non-capture. C'est un groupe qui n'est pas attrapé dans un groupe de correspondance. Ceci est une optimisation, supprimons le ?:
pour rendre le motif plus clair.
^\/node?(\/(\d+)(\.\.(\d+))?)?
Le \
est un caractère d'échappement, donc \/
est en fait juste un /
mais comme ceux-ci indiquent le début et la fin du modèle doit alors être échappé. Le .
correspond (presque) à n'importe quel caractère, il doit donc être échappé aussi.
Le ?
rend le motif de retrait facultatif, donc ()?
signifie que tout ce qui figure entre parenthèses apparaît zéro ou une fois.
^
indique le début de la chaîne
\/node?
correspond /node
ou /nod
\/(\d+)
matchs /
suivi d'un ou plusieurs chiffres (le \d+
).Les chiffres sont capturés dans le premier groupe de correspondance
(\.\.(\d+))?
correspond à ..
suivi d'un ou plusieurs chiffres (\d+
). Les chiffres sont capturés dans le deuxième groupe de correspondance
Je recommande de suivre un tutoriel regex: http://www.regular-expressions.info/tutorial.html. Tout est expliqué ici. –
Littéralement, tout article, tutoriel ou aide-mémoire sur les expressions régulières indique ce que signifient ces symboles. Quelle partie n'est pas claire? – JJJ