java - Java Regex 获取所有数字
问题描述
我需要从字符串中检索所有数字,例如:
"a: 1 | b=2 ; c=3.2 / d=4,2"
我想得到这个结果:
- 1
- 2
- 3.2
- 4,2
所以,我不知道在 Java 的 Regex 中怎么说。
实际上,我有这个:
(?<=\D)(?=\d)|(?<=\d)(?=\D)
他拆分字母和数字(但不尊重双精度值),结果是:
- 1
- 2
- 3
- 2(问题)
- 4
- 2(问题)
你能帮助我吗 ?
感谢:D
解决方案
您可以使用具有字符类的捕获组:
[a-z][:=]\h*(\d+(?:[.,]\d+)?)
解释
[a-z]
单词边界,匹配一个 char az[:=]
匹配:
或=
\h*
匹配 0+ 个水平空白字符(
捕获组 1\d+(?:[.,]\d+)?
将 1+ 位数字与可选的小数部分匹配为.
or,
)
关闭组
例如
String regex = "[a-z][:=]\\h*(\\d+(?:[.,]\\d+)?)";
String string = "a: 1 | b=2 ; c=3.2 / d=4,2";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出
1
2
3.2
4,2
推荐阅读
- ios - 如何绘制另一层六边形UIBezier Path并进行相应的动画处理
- swift - 文件“xxx”无法保存在文件夹“xxx”中 - 不保存 NSOpenPanel 的 NSImage 在 swift macos 中选择的 url
- python - 我如何从在线文件中读取 JSON 数据?(python)
- api - 有没有办法验证/验证 Msteams 事件和 API 的请求和响应?
- tabulator - 如何在 Tabulator 中设置标题和行高?
- continuous-integration - 在公共 PR 上运行 Azure Pipeline CI 之前运行安全检查
- tensorflow.js - BodyPix 人物分割在 Nodejs 上无法正常工作
- json - IBM 集成总线:SOAP 请求收到 HTTP 错误状态代码“500”
- python - “pip install”AWS Glue Python Shell 作业 - 更改包索引?
- ruby-on-rails - 如何停止有关 ffi 的 rubocop 错误