java - 正则表达式有助于仅计算字符串中的零

标签 java regex

我正在尝试计算一串数字中 0 的数量。不完全是字符 0,而是数字零。例如我想计算 0、0.0、0.000 等。数字将用空格分隔,例如:

1.0 5.0 1 5.4 12 0.1 14.2675 0.0 0.00005

在字符串中简单搜索 "0" 几乎可以完成这项工作(我必须首先在字符串中插入一个前导空格才能工作 - 以防第一个数字为零) 。但是,它不适用于 0.x 形式的数字,例如0.10.02 等。我想我需要检查 0 并查看是否有小数点及其后的非零数字,但我不知道该怎么做。类似于:

"0*|(0\\.(?!\\[1-9\\]))"

有人知道我如何实现这一目标吗?最好使用正则表达式。或者如果更容易的话,我很乐意计算非零元素的数量。谢谢。

注意:我在 Java 中使用 split 来执行此操作(使用正则表达式拆分字符串,然后使用 .length() 进行计数)。

最佳答案

这个怎么样:

(?<=^|\s)[0.]+(?=\s|$)

说明:

(?<=^|\s) # Assert position after a space or the start of the string
[0.]+     # Match one or more zeroes/decimal points
(?=\s|$)  # Assert position before a space or the end of the string

记住在 Java 字符串中使用双反斜杠。

关于java - 正则表达式有助于仅计算字符串中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7948049/

相关文章:

regex - 如何在 Vim 中只替换全字匹配?

php - 使用带有通配符的 MySQL REGEX anchor

c# - 捕获电子邮件地址中拼写错误的良好正则表达式是什么?

java - 如何添加没有Jar的库

java - 在范围内无法访问该类型的封闭实例

java - Eclipse 新手,需要指导

Python 正则表达式匹配搜索字符串的意外部分

java - 如何进行geode-benchmark?

java - Gson:序列化时如何忽略@SerializeName

regex - 前瞻正则表达式 - 识别重复的连续字母