Grep/bash 正则表达式 - 交替和数字集的组合

Grep/bash regex - combination of alternation and set of numbers

我需要匹配以下任何一项: AD-123, ad-123, AD123, and ad123

到目前为止我所拥有的是

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

但这只匹配字母而完全忽略数字,我想不出一种 bash 友好的方式来做到这一点。

Context/use case: prepare-commit-msg githook,我想从分支名称中取出Jira ticket,添加到任意commit message中。 Jira ticket 将根据 feature/version/ticker-keywords 的分支命名约定以上述方式之一编写(示例 feature/1.1.3/ad-123-some-branch)

您可以使用

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

这是匹配

的POSIX ERE(由于-E选项)正则表达式
  • (AD|ad) - ADad(不是 aDAd,因为根据您的要求这是不允许的)
  • [-']? - 可选的 -'
  • [0-9]+ - 1 个或多个数字

可视化: