正则产生一个不正确的结果



我很困惑(我很接近,但无法克服这个最后的障碍。

我需要从一系列的git分支中提取分支类型和"倡议",这些git分支的名称略有不同。分支类型分为第1组,主动权分为第2组。版本以" V"开头或根本没有。

所需的输入/输出为:

branchname          | group 1 | group 2
release/v1.2.3      | release | ""      
release/1.2.3       | release | ""
release/foo-v1.2.3  | release | foo
release/foo-1.2.3   | release | foo

我当前的正则是:(release)/(w*)-?(?=v?d+.d+.d*)

这会产生以下输入/输出:

branchname          | group 1 | group 2
release/v1.2.3      | release | "v"      <--- Problem!
release/1.2.3       | release | ""
release/foo-v1.2.3  | release | foo
release/foo-1.2.3   | release | foo

我的问题是我只有v1.2.3的情况。如果我能提供帮助,我不想返回并更改分支名称(由于很久以前的决定,我们有很多名称release/vX.Y.Z的名称)。

我在Linux系统上使用ANT作为此正则是这样的,所以我相信我需要遵循Java规则。

谢谢!

you 超级接近!尝试将?附加到您的第二个匹配组,例如:

(release)/(w*?)-?(?=v?d+.d+.d*)

请参阅REGEXR中的此功能。

您最好将可选属性应用于整个w+-模式:

(release)/(?:(w+)-)?v?d+(?:.d+)*

看来您也不需要LookAhead。

相关内容

  • 没有找到相关文章

最新更新