Regex Optional Groups?

Joel picture Joel · Jun 22, 2009 · Viewed 19.1k times · Source

I seem to have confused myself with a preg_match regex I'm doing, so fresh eyes and help would be appreciated.

My current regex is as follows:

/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se

I am looking to make the number input and colon e.g. :(1,4) optional, so it would match:

<!--menu:start--><!--menu:end-->

or

<!--menu:start:(0,3)--><!--menu:end-->

Answer

glmxndr picture glmxndr · Jun 22, 2009

Enclose with a non matching group and set it to optional : (?:...)?

/<!--menu:start(?::\(([0-9])\,([0-9])\))?-->(.*?)<!--menu:end-->/se