gpt4 book ai didi

linux - BASH_REMATCH 不输出匹配项

转载 作者:太空宇宙 更新时间:2023-11-04 10:00:15 28 4
gpt4 key购买 nike

上下文

我正在尝试使用正则表达式从 github https 克隆链接中提取存储库名称,但我似乎无法让 BASH_REMATCH 工作。

对于上下文,我将其编写为 .sh 文件并在 Git Bash 中运行它。

代码逻辑

正如您将在下面看到的,我基本上提供了一个克隆 https 链接,并且还提供了正则表达式模式。我在 https://regex101.com/ 上试过这个并且正则表达式正确地提取了字符串的最后一位:

/liam_test_3.git

它还提取了存储库名称的特定捕获组:

liam_test_3

但我在下面尝试测试的代码默认为“else”语句并输出“不匹配”。

代码

#!/bin/bash

# $1 = SSH Clone Link
# $2 = Github Organisation


CLONE="https://github.cloud.companyname.com/Organisation/liam_test_3.git";
re="\/(?!.*\/)(.*).git";

echo "$CLONE"
echo "$re"

if [[ $CLONE =~ $re ]]
then
repo_dir=${BASH_REMATCH[1]}
echo "Your repo name is $repo_dir"
else
echo "No Match"
fi;

最佳答案

尝试 re="([^/]*)\.git"; 这将匹配 url 的最后部分(最后一个/之后的所有内容),并捕获存储库名称。

请注意,您需要在 git 之前对 . 进行转义,否则这将匹配 url 中第一次出现的 git,如 . 将匹配 https://github 的第二个 /

关于linux - BASH_REMATCH 不输出匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56848052/

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