Grep / bash regex - комбинация чередования и набора чисел - PullRequest
1 голос
/ 26 марта 2019

Мне нужно в конечном итоге сопоставить любое из следующего: AD-123, ad-123, AD123, and ad123

Пока что у меня есть

| grep -oP 'AD-|ad-|AD|ad'[0-9]\+)

, но это соответствует только буквами полностью игнорирует числа, и я не могу придумать способ сделать это.

Контекст / вариант использования: prepare-commit-msg githook, я хочу взять билет Jira из имени ветви и добавить его в любое сообщение о коммите.Билет Jira будет написан одним из способов, описанных выше в соглашении об именах ветвей для feature / version / ticker-Keywords (пример feature / 1.1.3 / ad-123-some-branch)

1 Ответ

2 голосов
/ 26 марта 2019

Вы можете использовать

| grep -oE "(AD|ad)[-']?[0-9]+"

Это регулярное выражение PREIX ERE (из-за опции -E), которое соответствует

  • (AD|ad) - AD или ad (не aD или Ad, поскольку это не разрешено в соответствии с вашими требованиями)
  • [-']? - необязательно - или '
  • [0-9]+ -1 или более цифр

Визуализация:

enter image description here

...