给定一个看起来像这样的文件:
mmm 55 v1235
mmm 111 v1241
mmm 22 v2453
mmm 1 v3464
mmm 555 v5353
我希望结果是(用空格替换所有数字):
mmm v1235
mmm v1241
mmm v2453
mmm v3464
mmm v5353
好吧,我可以找到长度减去并转到空白。
我可以一行完成吗?
类似的东西,但在第二个子参数中是一个字符串而不是一个正则表达式:
new_line = re.sub(r'mmm \d+', r'mmm \s+', line)
最佳答案
使用先行查询,您可以检查匹配的数字是否后跟0个或多个数字以及空格,如下所示:
line = re.sub(r'\d(?=\d* )', ' ', line);
RegEx Demo
(?=\d* )
是正向超前,表示我们有0个或多个数字,并且在匹配的数字旁边有一个空格。