上下文
我试图使用regex从github克隆链接中提取存储库名称,但我似乎无法让BASH_REMATCH工作。
对于上下文,我将它写成一个.sh文件并在Git中运行。
码逻辑
如下所示,我基本上提供了一个克隆https链接,并提供了regex模式。我在https://regex101.com/上尝试了这一点,regex正确地提取了字符串的最后一部分:
/liam_test_3.git
它还提取了存储库名称的特定捕获组:
liam_test_3
但是下面我尝试测试的代码是默认的“否则”语句,并输出“无匹配”。
代码
#!/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;发布于 2019-07-02 08:23:37
尝试re="([^/]*)\.git"; --这将匹配url的最后一部分(最后/之后的所有内容),并捕获存储库名称。
请注意,您需要在git之前转义.,否则这将匹配url中的第一个git,因为.将匹配https://github的第二个/。
https://stackoverflow.com/questions/56848052
复制相似问题