假设我想要返回所有出现的' lep'在Python中的字符串中,但是如果出现在子文件中,例如' filepath'或者'电话'。现在我正在使用负前瞻/后瞻的组合:
(?<!te|fi)lep(?!hone|ath)
然而,我确实想要&#39;心灵感应&#39;和&#39; filephone&#39;以及&#39; filep&#39;并且&#39; telep&#39;我已经看过类似的问题,但没有找到解决这种前瞻/后方组合的问题。
谢谢!
答案 0 :(得分:1)
你可以在lookbehinds中放置前瞻(反之亦然;任何组合,实际上,只要每个lookbehind都有固定的长度)。这允许您将两个条件合并为一个(不以X 开头,以Y 结尾):
lep(?<!telep(?=hone))(?<!filep(?=ath))
将看起来最后的内容也更有效率。即使没有后缀(例如lep(?<!filep)
要排除filep
),我也会建议这样做。
然而,从像lep -telephone -filepath
这样的用户输入生成正则表达式有望变得挑剔和乏味。如果可以的话,首先搜索不需要的术语并消除它们会容易得多。例如,搜索:
(?:telephone|filepath|(lep))
如果搜索成功且group(1)
不是None
,则会受到影响。