gpt4 book ai didi

regex - Bash Regex 提取最后一次出现的字符串 (release-) 和某些字符 (--) 之间的所有内容

转载 作者:行者123 更新时间:2023-12-05 00:42:26 26 4
gpt4 key购买 nike

我有多个字符串,我想提取最后一次出现的字符串 (release-) 和一些字符 (--) 之间的所有内容。更具体地说,对于像下面这样的刺痛:

inte_integration-abc-abcde-abcdefg-release-release-PI_4.1-Sprint-3.1a--1.0.2-RELEASE

我想要以下输出:

PI_4.1-Sprint-3.1a

我在网上创建了一个正则表达式,你可以找到 here .正则表达式如下:

.*release-(.*)--.*

但是,当我尝试将此脚本用于 bash 脚本时,它不起作用。 Here就是一个例子。

artifactoryVersion="inte_integration-abc-abcde-abcdefg-release-release-PI_4.1-Sprint-3.1a--1.0.2-RELEASE"

[[ "$artifactoryVersion" =~ (.*release-(.*)--.*) ]]

echo $BASH_REMATCH[0]
echo $BASH_REMATCH[1]

将返回:

inte_integration-abc-abcde-abcdefg-release-release-PI_4.1-Sprint-3.1a--1.0.2-RELEASE[0]
inte_integration-abc-abcde-abcdefg-release-release-PI_4.1-Sprint-3.1a--1.0.2-RELEASE[1]

您对如何在 bash 中实现目标有任何想法吗?

最佳答案

你可以使用:

s='inte_integration-abc-abcde-abcdefg-release-release-PI_4.1-Sprint-3.1a--1.0.2-RELEASE'
rx='.*-release-(.*)--'
[[ $s =~ $rx ]] && echo "${BASH_REMATCH[1]}"

PI_4.1-Sprint-3.1a

Code Demo

您的正则表达式显示正确,但请确保使用 "${BASH_REMATCH[1]}" 在结果中提取第一个捕获组。

关于regex - Bash Regex 提取最后一次出现的字符串 (release-) 和某些字符 (--) 之间的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74110217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com