Przeszukuję wszystkie linki na stronie i dopasowuję ich wartości href do następującego wzoru:
([^/]+)/([0-9]+)/([^/]+)
Problem polega na tym, że istnieją dwa typy formatów linków na stronie:
1. /video/123/slug
2. /video/123
Numer 1. zostaje złapany przy użyciu powyższego wyrażenia regularnego, ale drugi nie. Chciałbym, aby trzeci fragment regex (the slug) był opcjonalny, więc oba formaty linków zwracają wartość true, gdy są dopasowane przed regex. Jak to zrobić?
Odpowiedzi:
3 dla odpowiedzi № 1Umieść ostatni bit w nawiasach grupy, która nie przechwytuje i dodaj ?
:
([^/]+)/([0-9]+)(?:/([^/]+))?
2 dla odpowiedzi nr 2
Posługiwać się ?
kwantyfikator, co sprawia, że twój wzór jest opcjonalny. Dopasowuje 0 lub 1 wystąpienie wzorca.
Musisz także zgrupować ostatni slash, z ostatnią częścią swojego regex, w grupie, która nie przechwytuje.
([^/]+)/([0-9]+)(?:/([^/]+))?
0 dla odpowiedzi № 3
Jeśli dodasz ?
to powinno uczynić ostatnią część wzoru opcjonalną.