正则表达式“动态”替换
我有一个多行字符串,需要在每行的开头附加一个(不同的)字符(1 个空格作为分隔符)。我怎么能用正则表达式做到这一点?有没有办法在没有太多拆分和合并的情况下做到这一点?
假设行数等于要添加的字符数。
输入
m = """
0 1 2 3 4 5
1 0 1 2 3 4
2 1 1 2 3 4
"""
所需的输出(假定参考字符串"bip")
b 0 1 2 3 4 5
i 1 0 1 2 3 4
p 2 1 1 2 3 4
b 0 1 2 3 4 5
i 1 0 1 2 3 4
p 2 1 1 2 3 4
这是一个基于n匹配的工作代码示例
import re
m = """
0 1 2 3 4 5
1 0 1 2 3 4
2 1 1 2 3 4
"""
re.sub(r'n', 'n{} ', m[:-1]).format(*list('bip'))
但我需要省略最后一个字符,它会n。我尝试使用其他模式,例如Aor^或^,flags=re.MULTILINE但没有成功。
如何避免字符串切片m[:-1]?
有没有更纯粹的正则表达式来解决这个问题?
回答
这是使用第 4 个参数count的re.sub另一种方法,它告诉要进行多少次替换:
根据链接的文档:
re.sub(pattern, repl, string, count=0, flags=0)
re.sub(pattern, repl, string, count=0, flags=0)
代码:
代码演示
输出: