使用 Regex 提取下一个语义发布版本

Extract next semantic-release version using Regex

我有一些语义释放输出的日志。我想得到下一个语义版本。

这是一些日志

[6:53:27 p.m.] [semantic-release] › ℹ  The next release version is 1.1.1
[6:53:27 p.m.] [semantic-release] › ℹ  Start step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[6:53:27 p.m.] [semantic-release] › ✔  Completed step "generateNotes" of plugin "@semantic-release/release-notes-generator"
[6:53:27 p.m.] [semantic-release] › ⚠  Skip step "prepare" of plugin "@semantic-release/changelog" in dry-run mode
[6:53:27 p.m.] [semantic-release] › ⚠  Skip 1.1.1 tag creation in dry-run mode
[6:53:27 p.m.] [semantic-release] › ✔  Published release 1.1.1 on apk-add-version channel
[6:53:27 p.m.] [semantic-release] › ℹ  Release note for version 1.1.1:

我想从日志中获取 1.1.1

我试过: yarn semantic-release -d | grep 'Release note' | grep -Eo "(\d+)\.(\d+)\.(\d+)"

在本地机器上工作,但我想尝试不同的方法(因为 egrep -ogreo -Eo 似乎在 github-actions 中不起作用。它总是 returns 错误代码 0)

我要找的是 Release note for version 1.1.1:

捕获 1.1.1 如果找到 Release not for version

这是因为 grep -E 正在使用不支持 \dextended regular expression。所以你有两个解决方案:

  • 使用 grep -P 使用 Perl 正则表达式并使用 \d
  • 使用 grep -E 但将正则表达式更改为 [[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+[0-9]+\.[0-9]+\.[0-9]+