假设我有以下字符串
GPH_EPL_GK_FIN
我想要一个在 python 中使用的正则表达式,它从 csv 文件(与这个问题无关)中查找以 GPH 开头但不包含 EPL 的记录的此类字符串
我知道胡萝卜 ^ 用于开始搜索
所以我有这样的东西
^GPH_.*
我也想包含 NOT contain 部分,如何链接正则表达式? 即
(^GPH_.*)(?!EPL)
我想最终更进一步,返回任何没有 EPL 的记录,即
GPH_ABC_JKL_OPQ
在 GPH_ 之后包含 EPL 部分
即想要的结果
GPH_EPL_ABC_JKL_OPQ
请您参考如下方法:
为了满足这两个要求:
- 组成一个模式来匹配以
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
