假设我有以下字符串
GPH_EPL_GK_FIN我希望在python中使用一个正则表达式,从csv文件中查找这样的字符串(与这个问题无关),以GPH开头但不包含EPL的记录。
我知道胡萝卜^最初是用来搜索的
所以我有这样的东西
^GPH_.*我想把不包含的部分也包括进去,我该如何链接这个正则表达式?即
(^GPH_.*)(?!EPL)我希望最终能更进一步,任何没有EPL返回的记录,即
GPH_ABC_JKL_OPQ在GPH_之后包含EPL部件
即期望结果
GPH_EPL_ABC_JKL_OPQ发布于 2019-09-05 19:24:53
为满足这两项要求:
GPH开头但不包含EPL的行EPL_部件插入到特定位置的匹配线中import re
# sample string containing lines
s = '''GPH_EPL_GK_FIN
GPH_ABC_JKL_OPQ'''
pat = re.compile(r'^(GPH_)(?!.*EPL.*)')
for line in s.splitlines():
    print(pat.sub('\\1EPL_', line))产出:
GPH_EPL_GK_FIN
GPH_EPL_ABC_JKL_OPQ发布于 2019-09-05 19:22:44
我想,这里就可以了:^GPH_(?!EPL).*
这将返回以GPH开头且在GPH_之后没有EPL的任何字符串。
发布于 2019-09-05 19:28:00
我猜其中一个选择就是,
(?<=^GPH_(?!EPL))和re.sub一起,
EPL_测试
import re   
print(re.sub(r"(?<=^GPH_(?!EPL))", "EPL_", "GPH_ABC_JKL_OPQ"))输出
GPH_EPL_ABC_JKL_OPQhttps://stackoverflow.com/questions/57811727
复制相似问题