Регулярное выражение, содержащее то или иное слово


84

Мне нужно создать выражение, соответствующее целому числу, за которым следует либо «секунды», либо «минуты».

Я пробовал это выражение: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)

Он отлично работает в течение секунд, но не минут.

Например, «5 секунд» дает 5 секунд; а "5 минут" дает ;; минуты

Ответы:


99

Вы просто пропустили лишнюю пару скобок для символа «ИЛИ». Следующее должно помочь:

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

Без них вы либо сопоставляли число, за которым следовали секунды, либо просто слово минуты


17
но это «дополнительное совпадение», которое не требуется. Либо использовать, ([0-9]+)\s+(?:(\bseconds\b)|(\bminutes\b))либо([0-9]+)\s+(\bseconds\b|\bminutes\b)
узнать

3
Да, это правда, скобки вокруг \ bseconds \ b и \ bminutes \ b не нужны!
micantox

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.