我有多个字符串,我想提取最后一个字符串(release-)和一些字符(--)之间的所有内容。更具体地说,对于以下字符串:
inte_integration-abc-abcde-abcdefg-release-release-PI_4.1-Sprint-3.1a--1.0.2-RELEASE
我希望得到以下输出:
PI_4.1-Sprint-3.1a
我在网上创建了一个正则表达式,您可以在这里找到它。该正则表达式如下:
.*release-(.*)--.*
然而,当我尝试将这个脚本用于bash脚本时,它无法工作。这里有一个示例。
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中实现我的目标?
.*
会匹配从字符串开头到release
的所有内容。最后的.*
则会匹配双破折线之后到字符串结尾的所有内容。$BASH_REMATCH[0]
包含整个匹配模式(即整个字符串)。$BASH_REMATCH[1]
包含与第一个左括号对应的模式部分,也就是整个字符串。 - user1934428