regex 删除十进制数的尾随零的正则表达式

im9ewurl  于 2023-08-08  发布在  其他
关注(0)|答案(4)|浏览(126)

我需要构建一个正则表达式来匹配小数点右侧的尾随零。
使用这个正则表达式/,0+$/,我可以匹配逗号右边的所有零,包括逗号,例如,123,000123,00,但是十进制数123,450中的零不匹配。
如果我使用这个正则表达式/0+$/,我可以匹配123,450中的零,但它也匹配这个数字120中的零。如何匹配仅在逗号后的尾随零?

t1qtbnec

t1qtbnec1#

你可以使用以下正则表达式进行匹配:

(?:(,[0-9]*[1-9])|,)0+$

字符串
并替换为:

$1


RegEx Demo

RegEx详情:

  • (?::启动非捕获组
  • (,[0-9]*[1-9]):匹配一个逗号,后跟0+个数字和一个数字1-9。在组#1中捕获此值(用于替换反向引用$1
  • |:或
  • ,:匹配逗号
  • ):结束非捕获组
  • 0+:匹配1+个零
  • $:结束
dldeef67

dldeef672#

如果支持后向Assert中的无限量词,则可以匹配逗号,或者Assert当前位置的左侧是一个逗号,后跟1个或多个数字。
然后将1个或多个零匹配到字符串的末尾,并替换为空字符串。

(?:,|(?<=,\d+))0+$

字符串

说明

  • (?:备选方案的非捕获组
  • ,按字面匹配
  • |
  • (?<=,\d+)正向后看,置位,和左侧的1+位
  • )关闭非捕获组
  • 0+匹配1+乘以零
  • $字符串结束

请参见regex demo

4szc88ey

4szc88ey3#

要仅匹配逗号后的尾随零,可以按如下方式修改正则表达式:

/,\d*0+$/

字符串
说明:
,\d*:匹配一个逗号后跟零个或多个数字。0+$:匹配字符串末尾的一个或多个零。通过在逗号后包含\d*,可以确保尾随零之前可以有任意位数。此模式将匹配逗号后面的尾随零,同时排除像120这样的数字,其中零前面没有逗号。
下面是一些正则表达式如何工作的示例:

  • 输入:123,000-匹配:000
  • 输入:123,00-匹配:00
  • 输入:123,450-无匹配(逗号后无尾随零)
  • 输入:120 -不匹配(零前面没有逗号)

希望这对你有帮助!如果你还有什么问题就告诉我。

hs1rzwqc

hs1rzwqc4#

  • "...如何匹配仅在逗号后的尾随零?“*

我假设你实际上是指 * 尾随 * 零,而不是一个奇异的零。
下面推断值 * 是 * 十进制值。
所以,我猜这里的违规是它会额外匹配 120 中的 0

(?<!,)0+$

字符串
负向后查找将Assert初始重复 0 之前的值不是逗号。
因此,它将在逗号后保留单数 0
比如说,

123,000
123,00
123,450


如果移除匹配项,将变为以下内容。

123,0
123,0
123,45


如果你想删除一个单数的 0,你可以附加模式。

(?<!,)0+$|,0+
123
123
123,45

的字符串

相关问题