正则表达式不同的哈希值
Regex different hashes
所以我正在努力使用正则表达式。我将从我想要实现的目标开始,然后继续“到目前为止”实现的目标。
所以例如我有提交名称行
merge(#2137): done something
Merge pull request #420 from Example/branch
feat(): done something [#2137JDN]
merge(#690): feat(): done something [#2137JDN]
而且我只想通过 PR ID 进行 grep,或者如果它不存在,那么它将通过第二个哈希进行搜索
#2137
#420
#2137JDN
#690
现在我有了这个正则表达式,但它并不完美
/(\(|\s|\[)(#\d+|#.+)(\)|\s|\])/g
因为它正在捕捉这个
(#2137)
\s#420\s
[#2137JDN]
(#690)[#2137JDN]
我如何改进它以获得我想要的东西?
您可以使用 #[\dA-Z]+
模式仅对哈希进行 grep。
command | grep -Po "#[\dA-Z]+"
其中 returns 所有匹配的字符串(在我们的例子中 - 哈希)
#2137
#420
#2137JDN
#690
#2137JDN
很遗憾,grep
不支持 non-greedy
功能。请参阅 this 答案。
所以我正在努力使用正则表达式。我将从我想要实现的目标开始,然后继续“到目前为止”实现的目标。
所以例如我有提交名称行
merge(#2137): done something
Merge pull request #420 from Example/branch
feat(): done something [#2137JDN]
merge(#690): feat(): done something [#2137JDN]
而且我只想通过 PR ID 进行 grep,或者如果它不存在,那么它将通过第二个哈希进行搜索
#2137
#420
#2137JDN
#690
现在我有了这个正则表达式,但它并不完美
/(\(|\s|\[)(#\d+|#.+)(\)|\s|\])/g
因为它正在捕捉这个
(#2137)
\s#420\s
[#2137JDN]
(#690)[#2137JDN]
我如何改进它以获得我想要的东西?
您可以使用 #[\dA-Z]+
模式仅对哈希进行 grep。
command | grep -Po "#[\dA-Z]+"
其中 returns 所有匹配的字符串(在我们的例子中 - 哈希)
#2137
#420
#2137JDN
#690
#2137JDN
很遗憾,grep
不支持 non-greedy
功能。请参阅 this 答案。