2013-03-07 18 views
11

Chciałbym zrobić preg_match na łańcuchu Uri z opcjonalnymi i wymaganymi częściami, ale nie mogę tego rozgryźć.Wymagane dopasowanie Regex i opcjonalne części łańcucha

Przykład dopasować:

/segment/(required)/segment(/optional) 

Chcę poniżej oba ciągi pasujące przeciwko powyższym

/segment/required/segment/optional 

i

/segment/reguired/segment 

znam polityka jest nie pisać do mnie ale nie mogę tego rozgryźć, więc pomyślałem, że przynajmniej zapytam.

Odpowiedz

18

Znak zapytania sprawia, że ​​poprzedni token w wyrażeniu regularnym jest opcjonalny. Np .: colou?r pasuje zarówno do colour, jak i color.

Możesz dodać kilka żetonów, grupując je za pomocą okrągłych nawiasów i umieszczając znak zapytania za nawiasem zamykającym. Np .: Nov(ember)? będzie pasować do Nov i November.

Możesz napisać wyrażenie regularne, które pasuje do wielu alternatyw, włączając więcej niż jeden znak zapytania. Feb(ruary)?23(rd)? mecze February 23rd, February 23, Feb 23rd i Feb 23.

Źródło: http://www.regular-expressions.info/optional.html

+0

Dzięki, najprostsze odpowiedzi sprawia, że ​​rzeczy kliknij, nie mogę umieścić, co chciałem do szukanej chociaż – philipobenito

Powiązane problemy