我正在尝试使用正则表达式从github https克隆链接中提取存储库名称,而我似乎无法使BASH_REMATCH正常工作。
对于上下文,我将其编写为.sh文件并在Git Bash中运行。
正如您将在下面看到的,我基本上提供了一个克隆https链接,并且还提供了正则表达式模式。我在https://regex101.com/上进行了尝试,正则表达式正确地提取了字符串的最后一部分:
/liam_test_3.git
使用它还可以提取仅存储库名称的特定捕获组:
liam_test_3
但是我下面尝试测试的代码默认为“ else”语句,并输出“ no match”。
#!/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;
答案 0 :(得分:1)
尝试re="([^/]*)\.git";
,它将匹配url的最后一部分(最后一个/之后的所有内容),并捕获存储库名称。
请注意,您需要在git之前转义。,否则将与URL中第一次出现的 git 匹配,即。将与 https://github
中的第二个 / 相匹配