Skip to main content
 首页 » 编程设计

python之正则表达式过滤器在开头包含单词但不包含另一个单词

2025年05月04日26cloudgamer

假设我有以下字符串

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