【发布时间】:2019-08-16 17:46:25
【问题描述】:
我最终需要匹配以下任何一项:
AD-123, ad-123, AD123, and ad123
到目前为止我所拥有的是
| grep -oP 'AD-|ad-|AD|ad'[0-9]\+)
但它只匹配字母而完全忽略了数字,我想不出一种对 bash 友好的方式来做到这一点。
上下文/用例:prepare-commit-msg githook,我想从分支名称中获取 Jira 票证并将其添加到任何提交消息中。 Jira 票证将按照 feature/version/ticker-keywords 的分支命名约定以上述方式之一编写(例如 feature/1.1.3/ad-123-some-branch)
【问题讨论】:
-
grep -oE '(AD|ad)-?[0-9]+'?还是grep -oE "(AD|ad)[-']?[0-9]+"? -
试试
(?:AD|ad)-?\d+ -
| grep -oE "(AD|ad)[-']?[0-9]+"工作,谢谢@WiktorStribiżew -
添加了answer。
-
记住
grep不是标准bashshell 的一部分。它们是与操作系统一起打包的外部二进制文件。如果您不是为此寻找内置的bash实用程序,请从标题和标签中删除字符串