如何使用正则表达式来匹配某些单词中未包含的字符?

How can I use use a regex to match characters that aren't included in certain words?

假设我想 return 在 Python 的字符串中出现的所有 'lep',但如果出现在像 'filepath' 或 'telephone'。现在我正在使用否定 lookahead/lookbehind:

的组合
(?<!te|fi)lep(?!hone|ath)

不过,我确实想要 'telepath' 和 'filephone' 以及 'filep' 和 'telep'。我见过类似的问题,但没有一个解决这种 lookahead/behind.

组合的问题

谢谢!

您可以将先行放置在后行中(反之亦然;任何组合,真的,只要每个后行都有固定的长度)。这允许您将两个条件合二为一( 不以 X 以 Y 结束):

lep(?<!telep(?=hone))(?<!filep(?=ath))

将回顾放在最后也会更有效率。我建议这样做,即使没有后缀(例如,lep(?<!filep) 排除 filep)。

然而,从像 lep -telephone -filepath 这样的用户输入生成正则表达式肯定是挑剔和乏味的。如果可以,首先搜索不需要的词并消除它们会容易得多。例如,搜索:

(?:telephone|filepath|(lep))

如果搜索成功并且group(1)不是None,则成功。