猿问

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

假设我有以下字符串

GPH_EPL_GK_FIN

我想要一个将在 python 中使用的正则表达式,它从 csv 文件(与此问题无关)中查找以 GPH 开头但不包含 EPL 的记录的此类字符串

我知道胡萝卜^一开始是用来搜索的

所以我有这样的东西

^GPH_.*

我也想包括不包含部分,我如何链接正则表达式?IE

(^GPH_.*)(?!EPL)

我想最终更进一步,并且返回没有 EPL 的任何记录,即

GPH_ABC_JKL_OPQ

包括GPH_EPL零件之后

即期望的结果

GPH_EPL_ABC_JKL_OPQ


当年话下
浏览 118回答 3
3回答

largeQ

要满足这两个要求:编写一个模式以匹配以开头GPH但不包含的行EPL将EPL_零件插入匹配行到特定位置import re# sample string containing liness = '''GPH_EPL_GK_FINGPH_ABC_JKL_OPQ'''pat = re.compile(r'^(GPH_)(?!.*EPL.*)')for line in s.splitlines():    print(pat.sub('\\1EPL_', line))输出:GPH_EPL_GK_FINGPH_EPL_ABC_JKL_OPQ

桃花长相依

只需使用这个:https://regex101.com/r/GwBsg2/2图案:^(?!^(?:[^_\n]+_)*EPL_?(?:[^_\n]+_?)*)(.*)GPH代替:\1GPH_EPL标志:gm

月关宝盒

我只是猜测一种选择是,(?<=^GPH_(?!EPL))并且re.sub,EPL_测试import&nbsp;re &nbsp;&nbsp;print(re.sub(r"(?<=^GPH_(?!EPL))",&nbsp;"EPL_",&nbsp;"GPH_ABC_JKL_OPQ"))输出GPH_EPL_ABC_JKL_OPQ
随时随地看视频慕课网APP

相关分类

Python
我要回答