Ruby 正则表达式 - 在找到两个字符中的第一个时停止

Ruby regex - stop when found first of two chars

假设我有以下包含 4 个元素的数组:

myArray = [
    "elasticsearch/elasticsearch-analysis-icu/2.4.2",
    "lukas-vlcek/bigdesk/2.5.0",
    "royrusso/elasticsearch-HQ",
    "polyfractal/elasticsearch-inquisitor"
]

迭代时,我想将一个子字符串赋值给一个变量,导致:

0) analysis-icu
1) bigdesk
2) HQ
3) inquisitor

我试过正则表达式 (.*\/(?:elasticsearch-)?(.*)(?:\/.*|\z)) 但它不会在 /

处停止

我怎样才能让它匹配到每个元素字符串的末尾或在第二个 /,如果有的话?

这里是在线测试员:http://rubular.com/r/t8ws1BbOU6


如果您喜欢 puppet,完整代码如下:

elasticsearch::plugin {[
    "elasticsearch/elasticsearch-analysis-icu/2.4.2",
    "lukas-vlcek/bigdesk/2.5.0",
    "royrusso/elasticsearch-HQ",
    "polyfractal/elasticsearch-inquisitor"
]}

并且:

$es_plugin_dir = regsubst($name, '(.*\/(?:elasticsearch-)?(.*)(?:\/.*|\z))', '')

在我看来 this regex 应该适合你:

(^[^\/]*?\/(?:[^\/-]*?\-)?([^\/]*?)(?=\/[^\/]*?$|$).*)

这是您更新后的代码:

$es_plugin_dir = regsubst($name, '(^[^\/]*?\/(?:[^\/-]*?\-)?([^\/]*?)(?=\/[^\/]*?$|$).*)', '')