我有一些这种形式的字符串[3 4.0:ad}
,我需要替换所有空格和数字,但.
(正确解析de float需要)
所以我写了这个正则表达式
\D*!.|\s+
但是没有用,我还没有理解我使用的正确语法
\D*
选择非数字字符
!.
从选择中排除.
|\s+
选择所有空格
如果我移除交叉点!.
,那么我使用它的方式是错误的。
有什么建议吗?
答案 0 :(得分:1)
你可以使用这样的否定字符类:
str = str.replaceAll("[^\\d.]+", "");
[^\\d.]
将匹配任何非数字而非DOT的字符。
btw \D
还包含空格,因此不需要在正则表达式中提供。
答案 1 :(得分:1)
正如它所说here,Java类交集
是 class1 中 class2 中的内容的子集。
相当简单的概念,但使用起来可能很棘手 最后,编译器会将此解析为单个类,所以如果是 结果很短且很明显,自己做的更好。
示例:
不是数字\D
不是点[^.]
你想匹配空格,这是非数字的一部分所以不用担心 关于那个。
因此交叉点是[\D&&[^.]]
它读作 Not Digits 和 Not Dots 。
翻译是[^\d.]
,编译器将其解析为。{1}}。
当你的内部有很多洞时,交汇的真正力量就来了 要排除的字符范围。
例如,除元音[a-z&&[^aeiou]]