【发布时间】:2018-02-06 14:56:24
【问题描述】:
我希望能够从正则表达式中获取两个匹配组并排除第三个。 这是我要匹配的字符串示例:
my-file-name-0.44.0.6-SOME-SNAPSHOT.zip
我想要两个匹配组,一个用于不带版本的文件名,另一个用于不带文件扩展名的版本。
- 第 1 组:我的文件名
- 第 2 组:0.44.0.6-SOME-SNAPSHOT
- 排除:.zip
文件名可以是随机的,但版本前总会有一个连字符,那么文件扩展名也可以是随机的。
这是我想出的,但无法弄清楚排除部分。
(.*?)-([0-9.]{1,4}.*)
【问题讨论】:
-
([\w-]+)-([\d.]+[\w-]+)(\.\w+)? -
^(.*?)-([0-9.]{1,4}.*)(\..+?)$ -
您的示例有 3 个组,只需要第 2 个组,这可行吗? (.*?)-(\d.+.*)\..+?$
-
您描述的规则不足以唯一标识文件名和版本。
my作为文件名和file-name-0.44.0.6-SOME-SNAPSHOT作为版本匹配规则。 (my-file和name-0.44) 或 (my-file-name和0.44) 也是如此。 -
文件名总是有两部分由“-”分隔,后跟文件扩展名。这将用于我可以定义正则表达式的工具中,因此无法通过使用代码来完成。
标签: regex