построить шаблон соответствия регулярному выражению для веток GitHub - PullRequest
0 голосов
/ 01 февраля 2020

Я довольно новичок в bash сценариях и регулярных выражениях, но я пытаюсь учиться. Пока я получил это:

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

Это близко, но не совсем то, что я хочу. Я хочу иметь возможность принимать все буквы, цифры, "_" и "-", но отклонять все остальное.

РЕДАКТИРОВАТЬ: здесь конкретно то, что я хочу разрешить: - может содержать числовые значения, но начинаться с цифры - должен содержать символы - может содержать только специальные символы "_" и "-", но не может начинаться с

. Вот несколько примеров недопустимых имен ветвей:

4idu
testing/here
-branch_name

Вот несколько примеров правильных названий веток:

test-feature
feature_test
feature1-test

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 01 февраля 2020

Вы не очень четко понимаете свои требования, но из того, что я понял, это должно охватить их все:

^[[:alpha:]][[:alnum:]_-]+$

Демонстрационная версия

Объяснение:

  • ^ - начать сопоставление с начала
  • [[:alpha:]] - сопоставить одно из A-Z,a-z
  • [[:alnum:]_-]+ - сопоставить хотя бы одно из A-Z,a-z,0-9,_,-
  • $ - конец в конце строки
1 голос
/ 01 февраля 2020

Надеюсь, ветвь GitHub - это ветка git!:

git branch | sed 's/^[* ] //' | egrep '^[A-Za-z][A-Za-z0-9_-]*[A-Za-z0-9]$'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...