我浏览了很多正则表达式主题,但这些主题都没有让我在我的特定情况下取得成功。
(使用java)我有一些字符序列,然后我将其转换为数组并将数字提取到双精度数组。
asdsad 59 asdf .2 asdf 56 89 .a 2.4 wef 95 asdf。
然后我想使用正则表达式删除多余的部分并组成以下字符串
59 2 56 89 2.4 95
这样我就可以使用.split(" ")并将它们全部放入双打数组中。
直到这一刻,我使用了以下表达式
[^0-9.\s]
Run Code Online (Sandbox Code Playgroud)
但它留下了额外的点,因此不可靠。现在我正在尝试类似的东西
[^0-9.\s]|([^0-9]\.[^0-9])
Run Code Online (Sandbox Code Playgroud)
但它根本不起作用,我对正则表达式不是很擅长,所以你能解释一下为什么最后一个表达式不起作用以及如何解决它。
您可以直接在此正则表达式上拆分:
([^\d.]|\B\.|\.\B)+
Run Code Online (Sandbox Code Playgroud)
IE
String[] parts = str.split("([^\\d.]|\\B\\.|\\.\\B)+");
Run Code Online (Sandbox Code Playgroud)
尽管这(可能)会在数组中留下一个前导空白。
要直接转到一行double[](处理前导空白):
double[] numbers = Arrays.stream(str.split("([^\\d.]|\\B\\.|\\.\\B)+"))
.filter(s -> !s.isEmpty())
.mapToDouble(Double::parseDouble)
.toArray();
Run Code Online (Sandbox Code Playgroud)
请参阅现场演示。
| 归档时间: |
|
| 查看次数: |
2384 次 |
| 最近记录: |