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)
- AD
或 ad
(不是 aD
或 Ad
,因为根据您的要求这是不允许的)
[-']?
- 可选的 -
或 '
[0-9]+
- 1 个或多个数字
可视化:
我需要匹配以下任何一项:
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)
-AD
或ad
(不是aD
或Ad
,因为根据您的要求这是不允许的)[-']?
- 可选的-
或'
[0-9]+
- 1 个或多个数字
可视化: