我希望将所有出现的A ... A转换为B ... B,以获得两个A之间的填充。必须允许填充符包含换行符。我认为re.DOTALL
是解决方案。
这是一个python脚本:
import re
tt1 = re.sub(r'A(?P<text>.*)A','B\g<text>B','AhiA')
print tt1
tt1 = re.sub(r'A(?P<text>.*)A','B\g<text>B','A\nhiA')
print tt1
tt1 = re.sub(r'A(?P<text>[.]*)A','B\g<text>B','A\nhiA')
print tt1
tt1 = re.sub(r'A(?P<text>.*)A','B\g<text>B','A\nhiA',re.DOTALL)
print tt1
这是输出:
BhiB
A
hiA
A
hiA
A
hiA
什么给出,如何用'B \ nhiB'代替'A \ nhiA'?
答案 0 :(得分:7)
re.sub()
的第四个参数是count
(要执行的最大替换操作数)。 re.DOTALL
为16
,因此您在意外的地方传递(有效)参数。
使用
re.sub(r'A(?P<text>.*)A','B\g<text>B','A\nhiA', flags=re.DOTALL)
(或将re.DOTALL
放在第五位):
re.sub(r'A(?P<text>.*)A','B\g<text>B','A\nhiA', 0, re.DOTALL)