[regex] Regular expression containing one word or another

I need to create an expression matching a whole number followed by either "seconds" or ""minutes"

I tried this expression: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)

It works fine for seconds, but not minutes.

E.g. "5 seconds" gives 5;seconds; while "5 minutes" gives ;;minutes

This question is related to regex preg-match

The answer is


You just missed an extra pair of brackets for the "OR" symbol. The following should do the trick:

([0-9]+)\s+((\bseconds\b)|(\bminutes\b))

Without those you were either matching a number followed by seconds OR just the word minutes


You can use a single group for seconds/minutes. The following expression may suit your needs:

([0-9]+)\s*(seconds|minutes)

Online demo