首页 > 解决方案 > 正则表达式正负前瞻

问题描述

我需要正则表达式的帮助。确实,我试图找到这些词:

“结果”、“NOMS”、“ECHANTILLONS”

但是如果结果前面有“les”,我不希望我的正则表达式匹配。我使用 Python。所以我选择了一个类型的正则表达式:

REGEX_NOMS_COL = re.compile("^(?!(les))R.SULTAT.*|NOMS|ECHANTILLON.*|analyses", re.IGNORECASE)

我的正则表达式中的各个点都充满了可能的口音。我的正则表达式部分工作......它在 regex101 ^^ 网站上工作正常,但在我的代码中较少,在不应该考虑“结果”时......

标签: python

解决方案


您似乎错误地匹配了否定的前瞻。试着把它放在单词后面。这与文档一致:

(?!...)

例如,仅当它后面没有. 时Isaac (?!Asimov)才会匹配。'Isaac ''Asimov'

(?:RESULTATS|NOMS|ECHANTILLONS)(?!les)
  • 在文档中,这将匹配任何'RESULTATS', 'NOMS', 或'ECHANTILLONS'仅当它后面没有'les'

在此处输入图像描述


推荐阅读