9

我想将所有出现的 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'?

4

1 回答 1

15

第四个参数re.sub()count(要执行的替换操作的最大数量)。re.DOTALL16,所以你在一个意想不到的地方传递了一个(有效的)参数。

利用

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)
于 2013-07-22T18:04:51.157 回答