【发布时间】:2018-05-16 19:24:52
【问题描述】:
我有一个包含一些内容的文件以及下面的两个“包含”字符串:
some string1
some string2
...
include: "base_pricing_app_model_my_deployment_id.model.lkml"
include: "base_map_layers.model.lkml"
...
some string3
...
子字符串“my_deployment_id”是我需要添加到第二个“包含”字符串的标记,因此文件内容如下所示:
some string1
some string2
...
include: "base_pricing_app_model_my_deployment_id.model.lkml"
include: "base_map_layers_my_deployment_id.model.lkml"
...
some string3
我正在运行 Python 3.5 并使用它的 re 库。这是我尝试替换第二个“包含”字符串的方法:
with fileinput.input(files=(rfi), inplace=True) as cmodf:
for line in cmodf:
match_no_dep_id = re.sub('^include:\s\"(?!my_deployment_id).*[.]model[.]lkml\"$', line.split('.')[0] + '_' + 'my_deployment_id' + 'model.lkml' + '"', line)
print(match_no_dep_id, end='')
但是,两个“包含”条目都被修改了,我最终得到以下内容:
some string1
some string2
include: "base_pricing_app_model_my_deployment_id_my_deployment_id.model.lkml"
include: "base_map_layers_my_deployment_id.model.lkml"
some string3
...
所以我的否定前瞻正则表达式匹配两个字符串,包括已经包含我要否定的令牌的字符串。
我不确定我在这里缺少什么。 请帮忙。
谢谢!
【问题讨论】:
标签: python regex-negation negative-lookahead