【问题标题】:Removing trailing zeros using REPLACE regex使用 REPLACE 正则表达式删除尾随零
【发布时间】:2020-07-20 11:49:36
【问题描述】:

将尾随零删除到具有 4 位小数的数字

预期输出示例:

1.7500 -> 1.75

1.1010 -> 1.101

1.0000 -> 1

我是 REGEX 的新手,所以我只是先尝试​​了这个但没有工作:

REPLACE ALL OCCURRENCES OF REGEX '^\.[0]\d{0,3}' IN lv_rate WITH space.

需要帮助才能使用正确的正则表达式。谢谢!

编辑SHIFT lv_rate RIGHT DELETING TRAILING '0' 不是一个选项。

【问题讨论】:

    标签: regex replace abap


    【解决方案1】:

    尝试替换以下正则表达式模式:

    \.?0+$
    

    使用空字符串作为替换。这将匹配一个可选的小数点,后跟零,直到字符串的末尾。请参阅下面的演示以了解此模式是否有效。

    Demo

    此答案假定所有输入始终具有小数部分。如果没有,那么我们需要添加额外的逻辑。

    【讨论】:

    • @BrianJacobSanchez 很高兴为您提供帮助。
    【解决方案2】:

    如果您想将尾随零删除到具有 4 位小数的数字,一种选择是使用捕获组并在替换中使用组 1。

    ^(\d+(?=\.\d{4}$)(?:\.\d*[1-9])?)\.?0+$
    

    部分

    • ^ 字符串开始
    • ( 捕获第 1 组
      • \d+ 匹配 1+ 位
      • (?=\.\d{4}$) 断言右边是 . 和 4 位数字
      • (?:\.\d*[1-9])? 可选匹配数字,直到最后一个数字 1-9
    • )关闭第一组
    • \.?0+ 匹配可选的 . 和 1 次或多次零
    • $字符串结束

    Regex demo

    【讨论】:

    • @BrianJacobSanchez 请注意,所选答案不考虑 4 位小数,例如还会删除 0-0 中的最后一个零
    • 您应该在此处提供 SAP 代码,因为可能不支持前瞻。
    • @TimBiegeleisen 我没有快速的解决方案来测试 SAP 代码,但我能找到的是它支持 preview conditions
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 2023-04-04
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多