gpt4 book ai didi

javascript - git commit (SHA1) 的正则表达式是否位于 Markdown 链接内

转载 作者:行者123 更新时间:2023-11-28 00:32:16 24 4
gpt4 key购买 nike

我想解析一行,其中包含单词 Commits (不区分大小写),后跟一个冒号、一个可能的空格以及由三个点分隔的两个提交哈希或包含在 Markdown 链接中的相同哈希。

例如,对于以下几行:

commits:56af25a...d3fead4
Commits: [56af25a...d3fead4](https://github.com/Glimpse/Semantic-Release-Notes/compare/56af25a...d3fead4)

我想要得到:

56af25a...d3fead4
[56af25a...d3fead4](https://github.com/Glimpse/Semantic-Release-Notes/compare/56af25a...d3fead4)

所以我测试了基本表达式/^commits:[ ]{0,}(.*)/i ,它有效,但我在 commits: 后面得到了任何东西,而不仅仅是两次提交。

我还测试了/^commits:[ ]*([\[.*?\]\(]?\b[0-9a-f]{5,40}\b\.\.\.\b[0-9a-f]{5,40}\b[\)]?)/i但我只得到两个提交,例如:

56af25a...d3fead4
[56af25a...d3fead4

是否可以使用一个正则表达式来实现我想要的效果,还是使用两个不同的正则表达式更好?

我只想要提交后的值: if :

  • 这是两个由三个点分隔的提交哈希:56af25a...d3fead4
  • 同样的事情,但作为 Markdown 链接文本:[56af25a...d3fead4](此处的任何内容)

如果之前或之后有任何事情,它一定会失败。因此,通常以下字符串是错误的:

Commits: [56af25a...d3fead4](https://github.com/Glimpse/Semantic-Release-Notes/compare/56af25a...d3fead4) Commits:
Commits: test[56af25a...d3fead4](https://github.com/Glimpse/Semantic-Release-Notes/compare/56af25a...d3fead4)
Commits: test [56af25a...d3fead4](https://github.com/Glimpse/Semantic-Release-Notes/compare/56af25a...d3fead4)

最佳答案

^commits:[ ]{0,}(?:([a-z0-9A-Z]+\.{3}[a-z0-9A-Z]+)|(\[[a-z0-9A-Z]+\.{3}[a-z0-9A-Z]+\]\(https?:\/\/\S+\)))$

只需尝试一下即可。查看演示。

https://regex101.com/r/eS7gD7/9

关于javascript - git commit (SHA1) 的正则表达式是否位于 Markdown 链接内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28871141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com