我对更高级的正则表达式概念比较陌生,并且开始研究后视和前瞻,但我感到困惑并需要一些指导。我有一个场景,我可能有几种不同类型的发布拉链,名称如下:
v1.1.2-beta.2.zip
v1.1.2.zip
我想编写一个可以在两种类型中找到匹配组的单行正则表达式。例如,如果文件类型是第一个 zip,我想要三个匹配组,如下所示:
v1.1.2-beta.2.zip
Group 1: v1.1.2
Group 2: beta
Group 3. 2
或者如果第二个压缩一个匹配组:
v1.1.2.zip
Group 1: v1.1.2
这就是事情开始让我感到困惑的地方,因为我假设正则表达式需要断言连字符是否存在,如果不存在,则只查找一个匹配组,如果找不到其他 3 个。
(v[0-9.]{0,}).([A-Za-z]{0,}).([0-9]).zip
这是我写的第一个正则表达式,女巫成功匹配第一种类型,但没有条件。我正在考虑在连字符后做一些非数字的匹配组范围,但不能完全让它工作,不知道让它忽略模式的其余部分,如果不接受则只接受第一组找到连字符
([\D]{0,}(?=[-]) # Does not work
有人能指出我正确的方向吗?