Ruby 从gem list命令中提取乘客版本

Ruby 从gem list命令中提取乘客版本,ruby,regex,gem,Ruby,Regex,Gem,如何在ruby代码中提取单独变量中的乘客版本 pasver=%x[/usr/local/rvm/bin/gem list | grep passenger | sed-r的/(passenger()(*)/\2/] 更新::: 我的解决方案: pasver = `/usr/local/rvm/bin/gem list | grep passenger`.sub /.*\((.*)\).*/, '\1' pasver=`/usr/local/rvm/bin/gem list | grep pa

如何在ruby代码中提取单独变量中的乘客版本


pasver=%x[/usr/local/rvm/bin/gem list | grep passenger | sed-r的/(passenger()(*)/\2/]

更新:::

我的解决方案:

pasver = `/usr/local/rvm/bin/gem list | grep passenger`.sub /.*\((.*)\).*/, '\1' pasver=`/usr/local/rvm/bin/gem list | grep passenger`.sub/*\(.*).*/,'\1'
您可以从Ruby中获得GemSpec列表,从中可以轻松提取版本号:

Gem::Specification.find_all_by_name("passenger").map(&:version).map(&:to_s)
简单正则表达式:

passenger *\(([^)]+?)\)

将获取括号中的所有内容

在您搜索的字符串中这对我没有用处,因为我使用chef在/usr/local/rvm中安装rvm,而不是默认的ruby解释器。我想看到更多的regexp,而不是任何其他的。我不知道。我需要从gem-bin:/usr/local/rvm/bin/gem-binary安装一个版本的gem。因此我使用sed。