Regex 为GitHub分支构建正则表达式匹配模式
我对bash脚本和regex相当陌生,但我正在努力学习。到目前为止,我已经了解到:Regex 为GitHub分支构建正则表达式匹配模式,regex,bash,shell,Regex,Bash,Shell,我对bash脚本和regex相当陌生,但我正在努力学习。到目前为止,我已经了解到: regexBranchPattern="[A-Za-z0-9_]+" while [[ ! $branch_name =~ $regexBranchPattern ]]; do echo "Specify a branch name" read -r branch_name if [[ ! $branch_name =~ $regexBranchPattern ]]; then
regexBranchPattern="[A-Za-z0-9_]+"
while [[ ! $branch_name =~ $regexBranchPattern ]]; do
echo "Specify a branch name"
read -r branch_name
if [[ ! $branch_name =~ $regexBranchPattern ]]; then
echo "Branch name can only conatin letters, numbers, and \"_\"."
fi
done
这很接近,但不是我想要的。我希望能够接受所有字母、数字、“u”和“-”,但拒绝其他任何东西
编辑:以下是我希望允许的具体内容:
-可以包含数值,但以数值开头
-必须包含字符
-只能包含特殊字符“\u”和“-”,但不能以任何一个开头
以下是一些无效分支名称的示例:
4idu
testing/here
-branch_name
test-feature
feature_test
feature1-test
以下是一些有效分支名称的示例:
4idu
testing/here
-branch_name
test-feature
feature_test
feature1-test
任何帮助都将不胜感激。希望GitHub分支就是git分支!:
git branch | sed 's/^[* ] //' | egrep '^[A-Za-z][A-Za-z0-9_-]*[A-Za-z0-9]$'
您对自己的要求不是很清楚,但据我所知,这应该涵盖所有要求:
^[[:alpha:]][[:alnum:]_-]+$
说明:
-从头开始匹配^
-匹配[[:alpha:]
A-Z,A-Z中的一个
-至少匹配[[:alnum:][u-][+
A-Z、A-Z、0-9、-][/code>
-在字符串末尾结束$
-
,为什么不将其包含在括号表达式中,比如[A-Za-z0-9.-]+
?此外,您是否有任何限制,例如分支机构名称必须以字母开头?如果是这样,请在您的问题中包括一些有效和无效分支名称的示例,并向我们展示您认为匹配正确(或错误)的正则表达式是什么样子。请注意,目前,\u
是一个有效的分支名称。感谢您的澄清。我将用更多的例子和更多的细节来更新我的问题。从你的例子来看,有效的分支名称可能是一个或多个以字母开头的字母数字单词,单词之间用连字符或下划线分隔。(是否foo-1
有效?)。试一试,我们大家都会p̶o̶k̶e̶h̶o̶l̶e̶̶s̶i̶n̶y̶o̶u̶r̶w̶o̶r̶k̶k̶提出改进建议: