Регулярное выражение соответствует обязательным и необязательным частям строки


Я хотел бы сделать preg_match для строки uri с необязательными и обязательными частями, но я не могу этого понять.

Пример для сопоставления:

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

Я хочу, чтобы обе строки ниже соответствовали приведенным выше

/segment/required/segment/optional

И

/segment/reguired/segment

Я знаю, что политика заключается в том, чтобы не писать для меня, но я не могу понять этого, поэтому подумал, что, по крайней мере, спрошу.

 14
Author: philipobenito, 2013-03-07

1 answers

Знак вопроса делает предыдущий маркер в регулярном выражении необязательным. Например: colou?r соответствует как colour, так и color.

Вы можете сделать несколько токенов необязательными, сгруппировав их вместе с помощью круглых скобок и поместив знак вопроса после закрывающей скобки. Например: Nov(ember)? будет соответствовать Nov и November.

Вы можете написать регулярное выражение, которое соответствует многим альтернативам, включив более одного вопросительного знака. Feb(ruary)? 23(rd)? совпадения February 23rd, February 23, Feb 23rd и Feb 23.

Источник: http://www.regular-expressions.info/optional.html

 21
Author: VladL, 2013-03-07 19:25:57