Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 为GitHub分支构建正则表达式匹配模式_Regex_Bash_Shell - Fatal编程技术网

Regex 为GitHub分支构建正则表达式匹配模式

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

我对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
      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̶提出改进建议: