You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用纯正则实现多行字符串每行开头动态插入不同字符,无需切片

纯正则实现方案

核心思路是配合re.MULTILINE模式匹配非空行的行首位置,用迭代器按顺序注入要插入的字符,完全不需要对原字符串做切片处理:

import re

m = """
0 1 2 3 4 5
1 0 1 2 3 4
2 1 1 2 3 4
"""
insert_chars = "bip"
# 构造字符迭代器,按顺序取字符
char_iter = iter(insert_chars)
result = re.sub(
    pattern=r'^(?=[^\n])',  # 匹配行首,且行首后不是换行符(排除空行)
    repl=lambda match: f"{next(char_iter)} ",
    string=m,
    flags=re.MULTILINE
)
print(result)

原理说明

  • 正则^(?=[^\n])中,^在re.MULTILINE模式下会匹配每一行的开头位置,正向预查(?=[^\n])会过滤掉行首后紧跟换行符的空行(比如示例原字符串最开头的空行位置),刚好匹配到3个有内容的行首位置
  • 替换函数用迭代器按顺序取要插入的字符,刚好符合已知的「行数和插入字符数相等」的前提
  • 原字符串末尾的换行符不会被修改,不需要额外做m[:-1]切片处理

内容的提问来源于stack exchange,提问作者cards

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 17:15:03