【发布时间】:2015-12-02 00:27:01
【问题描述】:
已经回答了很多关于替换所有正数的问题。但是,我找不到任何同时保留正数和负数的答案。我想替换所有不是数字(正数或负数)的东西。输出应如下所示。
0 | success. id - 1234| -> 0 1234
和
-10 | failure. id - 2345| -> -10 2345
显然this 的答案是肯定的。
【问题讨论】:
标签: java regex regex-negation
已经回答了很多关于替换所有正数的问题。但是,我找不到任何同时保留正数和负数的答案。我想替换所有不是数字(正数或负数)的东西。输出应如下所示。
0 | success. id - 1234| -> 0 1234
和
-10 | failure. id - 2345| -> -10 2345
显然this 的答案是肯定的。
【问题讨论】:
标签: java regex regex-negation
您可以使用此正则表达式来匹配正/负整数:
[+-]?\b\d+\b
匹配正数/负数,包括小数:
[+-]?\b\d+(?:\.\d+)?\b
请注意,您最好在Pattern 和Matcher API 中使用上述正则表达式,而不是使用替换,然后只获取匹配的数据。
如果您只能使用替换,请使用:
str = str.replaceAll( "([+-]?\\b\\d+\\b)|\\S+[ \\t]*", "$1" );
【讨论】:
0和1234之间显示一个空格,但不建议替换,最好使用匹配。
我在 Kotlin 中使用它来替换所有非 Double 字符,然后再解析为 Double:
val double = str.replace("[^0-9.-]".toRegex(), "").toDoubleOrNull()
【讨论】: