java - 用于以版本格式提取数字的正则表达式
问题描述
我将从字符串中提取数字。数字代表一个版本。这意味着,我将匹配介于以下之间的数字:
_
和/
/
和/
我准备了以下正则表达式,但它没有按预期工作:
.*[\/_](\d{1,2}[.]\d{1,2}[.]\d{1,2})\/.*
对于以下示例,正则表达式应匹配两次:
输入:name_1.1.1/9.10.0/abc
。预期结果:1.1.1
and 9.10.0
,但我的正则表达式只返回9.10.0
,1.1.1
被省略。你知道有什么问题吗?
解决方案
您可以在_
or上拆分字符串/
,然后保留看起来是版本的组件:
List<String> versions = new ArrayList<>();
String input = "name_1.1.1/9.10.0/abc";
String[] parts = input.split("[_/]");
for (String part : parts) {
if (part.matches("\\d+(?:\\.\\d+)*")) {
versions.add(part);
}
}
System.out.println(versions); // [1.1.1, 9.10.0]
推荐阅读
- html - 勾选复选框时如何删除输入文本?
- sql - 删除 '-' 之前和之后的字符 '-' 保留包含多个字符 '-' 的字符串中间
- javascript - 如何在保持“必需”功能不变的同时将“发送”按钮链接到另一个页面
- rest - 为什么我不能以这种方式在 request.get() 中使用 parse.quote() ?
- python - Python:将一行展开为多行并进行计算
- azure-virtual-machine - Azure VM 的动态专用 IP 地址的 TTL?
- javascript - 如何在画布上绘制 GIF?
- javascript - 将画布图像上传到服务器 eviting net:ERR_CONNECTION_RESET
- php - 运行 php 7.4 时在 ACF 中导致此问题的原因是什么?
- r - 人体测量 z 分数(WHO 软件包 Anthro)并保留 ID