gpt4 book ai didi

java - 否定正则表达式捕获组

转载 作者:行者123 更新时间:2023-12-01 12:16:34 26 4
gpt4 key购买 nike

我正在开发一个程序,可以在线检查是否有可用的更新。我用于更新检查的网站给了我一个纯文本响应,如下所示:

filename:foobar0.2.3-dev.zip

我想要实现的是从我收到的字符串中获取版本号(0.2.3-dev),而文件名每次都不必采用这种格式,所以它也应该适用于 baz0.2.3-dev.jar 等。

我不知道如何做到这一点,非常感谢任何帮助。

亲切的问候。

@编辑

在 Ben 的帮助下(见下面他的回答),我找到了一种方法来完成这项工作。

String input = "filename:foobar0.2.3-dev.zip";
Pattern p = Pattern.compile(".*?((\\d+(?:\\.\\d+)*).+)\\..*");
Matcher m = p.matcher(input);

if(m.matches()) {
System.out.println(m.group(1)); // This should output 0.2.3-dev
}

最佳答案

您可以尝试匹配“number.number.number-dev”,例如以下内容

  /(\d+\.\d+\.\d+-dev)/

查看实际效果 here

对于 Java,导入 java.util.regex.* 并尝试:

    Pattern p = Pattern.compile(".*?(\\d+\\.\\d+\\.\\d+-dev).*");
Matcher m = p.matcher("filename:foobar0.2.3-dev.zip");
if (m.matches()) {
System.out.println(m.group(1));
}
else {
System.out.println("Pattern does not match");
}

并在行动here

关于java - 否定正则表达式捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26960705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com