问题描述
我想替换逗号后前两位数字后的所有字符。
例如字符串为1234,56789
的结果应为1234,56
。
使用[^,]*$
已将我带到正确的路径,但删除了逗号后的所有内容。
[^,]..$
也不能给我正确的结果,因此我需要一种方法来告诉我的表达式,“逗号后面的前2位数字”必须删除,而不是“最后2位数字”,因为那是“ ..”在我的表情中似乎是做什么的。
解决方法
您可以使用
(,\d{2}).*
正则表达式将逗号和两位捕获并捕获到组1 中,并将它们与.*
匹配。
要仅在最后一个逗号后删除:
(.*,\d{2}).*
在这里,.*
开头也会捕获字符串开头的所有内容。
一种更具限制性的模式
^(\d+,\d{2})\d*$
它匹配字符串的开头(用^
,然后匹配一个或多个数字(用\d+
),一个逗号,两个数字,都捕获到组1中,然后匹配零个或多个字符串(\d*
的末尾有数字($
)。
替换为$1
(或\1
,具体取决于正则表达式引擎)。参见regex demo(另请参见this one和this one,too)。
您可以使用:
import re
re.sub(r',(\d{2}).*',r',\1',a)