сопоставление строки в ruby ​​с регулярным выражением - PullRequest
0 голосов
/ 12 января 2010

У меня есть следующая строка

'passenger (2.2.5, 2.0.6)'.match(//)[0]

что, очевидно, еще ничего не соответствует

Я хочу вернуть только содержимое (2.2.5,, чтобы все было после открытых скобок и до запятой.

Как бы я это сделал?

Ответы [ 3 ]

2 голосов
/ 12 января 2010

Beanish решение не работает на более чем 2 номерах версий, вы должны использовать что-то вроде:

>> 'passenger (2.2.5, 2.0.6, 1.8.6)'.match(/\((.*?),/)[1] # => "2.2.5"
1 голос
/ 12 января 2010
#!/usr/bin/env ruby

s = 'passenger (2.2.5, 2.0.6)'
p s.scan(/(?:\(|, *)([^,)]*)/).flatten    # => ["2.2.5", "2.0.6"]
1 голос
/ 12 января 2010
'passenger (2.2.5, 2.0.6)'.match(/\((.*),/)[1]

если вы используете элемент $ 1, это группа, которая находится внутри ()

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