Соответствующая строка в регулярном выражении в Ruby с диапазоном чисел - PullRequest
1 голос
/ 24 марта 2012

У меня есть 2 строки:

I have 4 cars in my house
I have 14 cars in my house

Как использовать регулярное выражение ruby ​​(1.9.3) для проверки соответствия только 1–10 автомобилей?

Пример:

I have 1 car in my house # => match
I have 4 cars in my house # => match
I have 10 cars in my house # => match
I have 14 cars in my house # => should not match
I have 100 cars in my house # => should not match

Кроме того, как мы сопоставляем (то есть 2 машины) против каких-либо строк?так что если целевая строка содержит «22 машины», она не должна совпадать.

Пример:

some other string before 2 cars some other string after # => match
some other string before 22 cars some other string after # => should not match    

Ответы [ 2 ]

2 голосов
/ 24 марта 2012

Используйте это RegExp: /I have ([1-9]|10) cars? in my house./

* [1-9] создает диапазон 1,2,3,4,5,6,7,8,9, а символ канала действует как or чтобы учесть 10. Скобки - это группа захвата.Знак вопроса после «s» в конце автомобилей означает «ноль или один из предшествующих символов» и поэтому соответствует как «автомобиль», так и «автомобиль».Надеюсь, это помогло!

1 голос
/ 24 марта 2012

Регулярное выражение: /I have (?:1 car|[2-9] cars|10 cars) in my house/

Вы можете попробовать это интерактивно на http://rubular.com/

(?: Xxx) делает круглые скобки не захватывающими, как указано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...