我对一个特定的正则表达式感到难过(我非常接近,但还没能克服这最后一道障碍。
我需要从一系列名称略有变化的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规则。
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:0)
您最好将可选属性应用于整个\w+-
模式:
(release)\/(?:(\w+)-)?v?\d+(?:\.\d+)*
看来你也不需要前瞻。