正则表达式-如何在满足某些条件的引号之间替换文本

时间:2018-08-17 01:49:18

标签: python regex

说我有以下输入字符串:

s = ''' not this "not this either", "but {this}"'''

我想将其替换为:

''' not this "not this either", f"but {this}"'''

规则是,仅当开放双引号和相应的封闭双引号包含一对f{时,我才在开放双引号前面添加}

目前我只能做

p = re.compile('".*?"')
matches = p.findall(s)
for match in matches:
    if '{' in match and '{' in match:
        s = s.replace(match, 'f'+match) 

我想知道是否有更清洁的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

您可以使用正向前瞻:

s = ''' not this "not this either", "but {this}"'''
p = re.compile('(?="[A-Za-z ]+?{\w+}")')
new_s = p.sub('f',s)
print (new_s)

结果:

not this "not this either", f"but {this}"