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

问题描述 投票:1回答:2

我需要最终匹配以下任何一个: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)

regex bash grep githooks
2个回答
2
投票

你可以用

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

这是一个匹配的POSIX ERE(由于-E选项)正则表达式

  • (AD|ad) - ADad(不是aDAd,因为根据您的要求不允许)
  • [-']? - 可选的-'
  • [0-9]+ - 1位或更多位数

可视化:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.