替换除 positive/negative 数字以外的所有内容

Replace everything except positive/negative numbers

已经回答了许多关于替换所有正数的问题。但是,我找不到任何同时保留正数和负数的答案。我想替换所有不是数字的东西(正数或负数)。输出应如下所示。

0 | success. id - 1234| -> 0 1234

-10 | failure. id - 2345| -> -10 2345

显然 this 回答了积极的部分。

您可以使用此正则表达式匹配 positive/negative 个整数:

[+-]?\b\d+\b

RegEx Demo

匹配 positive/negative 个数字,包括小数:

[+-]?\b\d+(?:\.\d+)?\b

请注意,与其使用 replace,不如在 PatternMatcher API 中使用上述正则表达式,并只获取匹配的数据。


如果你只能使用替换,那么使用:

str = str.replaceAll( "([+-]?\b\d+\b)|\S+[ \t]*", "" );

Replace Demo

我在 Kotlin 中使用它来替换所有非双精度字符,然后再解析为双精度字符:

val double = str.replace("[^0-9.-]".toRegex(), "").toDoubleOrNull()