首页 > 解决方案 > 使用正则表达式 (regex) 在字符串中查找非零值

问题描述

字符串 1: _0.05_0.0_0.0_0.0_0.0_0.0_

字符串 2: _8.5_5.0_0.0_0.0_0.0_1.25_

这些是用下划线分隔的订单数量。如何使用正则表达式计算非零顺序计数。字符串 1 中的非零阶计数为 1 ( 0.05),字符串 2 中的非零阶计数为 3 ( 8.5, 5.0, 1.25)。

到目前为止尝试过: ^_0.0_$,但它给出了错误的结果。

请帮忙

标签: regex

解决方案


您可以使用

(?<=_)(?![0.]+_)\d+\.\d+

请参阅正则表达式演示

细节

  • (?<=_)- a_必须立即出现在当前位置的左侧
  • (?![0.]+_)- 紧靠右边,不能只有零和.
  • \d+\.\d+- 一位或多位数字, ., 一位或多位数字。

你也可以使用

(?<!\d)(?!0+\.0+(?!\d))\d+\.\d+

请参阅此正则表达式演示详情

  • (?<!\d)- 左侧数字边界
  • (?!0+\.0+(?!\d))-.当前位置的右侧不允许有一个或多个零、一个或多个不跟数字的零
  • \d+\.\d+- 一位或多位数字, ., 一位或多位数字。

推荐阅读