语境 我正在尝试使用正则表达式从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;
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
尝试使用re="([^/]*).git";此方法将匹配url的最后部分(最后一个/之后的所有内容),并捕获存储库名称。
请注意,您需要转义。在git之前,否则将与url中第一次出现的git相匹配,例如。将匹配第二个/的https://开头的github