【问题标题】:Replace everything except positive/negative numbers替换除正数/负数外的所有内容
【发布时间】:2015-12-02 00:27:01
【问题描述】:

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

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

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

显然this 的答案是肯定的。

【问题讨论】:

    标签: java regex regex-negation


    【解决方案1】:

    您可以使用此正则表达式来匹配正/负整数:

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

    RegEx Demo

    匹配正数/负数,包括小数:

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

    请注意,您最好在PatternMatcher API 中使用上述正则表达式,而不是使用替换,然后只获取匹配的数据。


    如果您只能使用替换,请使用:

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

    Replace Demo

    【讨论】:

    • 等号有什么用?
    • 0 |成功。编号 - 1234|在您的替换正则表达式中返回 01234 而不是 0 1234
    • this demo01234之间显示一个空格,但不建议替换,最好使用匹配。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-10
      • 2019-12-11
      • 1970-01-01
      • 2013-12-26
      • 2017-08-26
      • 2012-07-31
      • 1970-01-01
      • 2021-11-27
      相关资源
      最近更新 更多