首页 > 解决方案 > 正则表达式“在逗号后的前 2 位数字后全部替换”

问题描述

我想替换逗号后前 2 位数字后的所有字符。

例如,有一串1234,56789应该导致1234,56.

使用[^,]*$使我走上了正确的道路,但删除了逗号后的所有内容。

A[^,]..$也没有给我正确的结果,因此我需要一种方法来告诉我的表达式“逗号后的前 2 位数字”必须被删除,而不是“最后 2 位数字”,因为这就是“..”似乎做我的表达。

标签: regexregexp-replace

解决方案


您可以使用

(,\d{2}).*

正则表达式匹配并捕获到第 1 组一个逗号和两个数字,并且只匹配该行的其余部分与.*.

仅在最后一个逗号后删除:

(.*,\d{2}).*

在这里,.*在开头也捕获了字符串开头的所有内容。

一个更具限制性的模式将是

^(\d+,\d{2})\d*$

它匹配字符串的开头(带^),然后是一个或多个数字(带\d+),一个逗号,两个数字,都捕获到第 1 组中,然后只匹配\d*字符串末尾的零个或多个数字(带 ) (带$)。

替换为$1(或\1取决于正则表达式引擎)。请参阅正则表达式演示(也是这个这个)。


推荐阅读