给定一个看起来像这样的文件:

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个或多个数字,并且在匹配的数字旁边有一个空格。

08-27 08:45