可以说我有以下包含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))', '\2')

#1楼 票数:1 已采纳

在我看来, 这个正则表达式应该为您工作:

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

这是您的更新代码:

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

  ask by RASG translate from so

未解决问题?本站智能推荐:

4回复

使用Ruby正则表达式匹配字符串数字

我需要帮助将字符串与ruby正则表达式匹配。 (是给木偶的) 最后,我该如何匹配所有数字:001到010。 示例:master001,master002,master003 然后,我需要匹配所有以011到999开头的内容。 示例:master011,master012 ..
1回复

Puppet正则表达式(在引号之间获取var中的路径)

我有以下 yaml: 然后我使用了以下正则表达式https://regex101.com/r/pVzseA/1来获取这些引号之间的值(正则表达式在 regex101.com 中有效)但在 Puppet 中不起作用: 更新,类:
2回复

正则表达式匹配与第一个字符不同的字符

我试图使用正则表达式来匹配这样的模式: (任何字母)(不同的字母)(再次相同的字母) 因此,例如: 这些都是有效的示例: 这些无效: 我试图以这种方式做到这一点: 但是,这仍然匹配第二个字母与第一个字母相似的情况(例如: aaa )。 看到这里: http : //ru
4回复

ruby,使用正则表达式在两个字符串之间找到一些东西

使用Ruby + regex,给出: starting-middle+31313131313@mysite.com 我想获得: 31313131313 即, starting-middle+和mysite.com 这是我到目前为止所拥有的:
4回复

第一个和最后一个字符的正则表达式条件

如何编写正则表达式以匹配不以空格字符开头或结尾的字符串? 匹配的字符串中间可以有任何字符,重要的是,单个字符的字符串应该匹配。 我的尝试是: 但这不会匹配单个字符。
2回复

C#正则表达式提取两个字符之间的字符串,但第一个字符出现多次

我正在尝试提取两个字符之间的字符串。 第一个角色有多次出现,我需要第一个字符的最后一次出现。 我已经检查过类似的问题,但是在多次出现第一个字符的情况下,所有建议的正则表达式均无效。 例: 我的代码: 当前结果: 预期结果:
1回复

正则表达式:仅当匹配大于一个字符时才匹配两个字符

我的文字: 我想提取: 我正在使用此表达式来匹配括号中的文本: 但它正在回归:
1回复

正则表达式匹配两个字符串,包括第一个字符串

假设我有一个字符串: var n = 10 我想要一个匹配以下部分的正则表达式: var n 我试过了: var(.*?)= 但那只匹配: n