Регулярний вираз, що містить те чи інше слово


85

Мені потрібно створити вираз, що відповідає цілому числу, після чого слід "секунди" або "хвилини"

Я спробував такий вираз: ([0-9]+)\s+(\bseconds\b)|(\bminutes\b)

Він чудово працює протягом декількох секунд, але не хвилин.

Наприклад, "5 секунд" дає 5; секунд; тоді як "5 хвилин" дає ;; хвилини

Відповіді:


100

Ви щойно пропустили зайву пару дужок для символу "АБО". Наступне повинно зробити трюк:

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

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


17
але це "додатковий збіг", який не потрібен. Або використовуйте ([0-9]+)\s+(?:(\bseconds\b)|(\bminutes\b))або([0-9]+)\s+(\bseconds\b|\bminutes\b)
dognose

3
Так, це правда, немає потреби в дужках близько \ bсекунд \ b і \ bхвилин \ b!
micantox

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.