python - 正则表达式正负前瞻
问题描述
我需要正则表达式的帮助。确实,我试图找到这些词:
“结果”、“NOMS”、“ECHANTILLONS”
但是如果结果前面有“les”,我不希望我的正则表达式匹配。我使用 Python。所以我选择了一个类型的正则表达式:
REGEX_NOMS_COL = re.compile("^(?!(les))R.SULTAT.*|NOMS|ECHANTILLON.*|analyses", re.IGNORECASE)
我的正则表达式中的各个点都充满了可能的口音。我的正则表达式部分工作......它在 regex101 ^^ 网站上工作正常,但在我的代码中较少,在不应该考虑“结果”时......
解决方案
您似乎错误地匹配了否定的前瞻。试着把它放在单词后面。这与文档一致:
(?!...)
例如,仅当它后面没有. 时
Isaac (?!Asimov)
才会匹配。'Isaac '
'Asimov'
(?:RESULTATS|NOMS|ECHANTILLONS)(?!les)
- 在文档中,这将匹配任何
'RESULTATS'
,'NOMS'
, 或'ECHANTILLONS'
仅当它后面没有'les'
推荐阅读
- css - 尝试部署后,静态无法与我的任何项目一起使用
- android - 无法在 Android 11 中制作聊天气泡
- azure - 试图从输入参数列表中排除一组虚拟机
- javascript - 在 Puppeteer.js 中获取 page.evaluate 之外的根文档对象
- haskell - Haskell 中的随机函数
- python - 创建在循环中使用 *args 的 lambda
- regex - 正则表达式:匹配字符集中的字符串,但需要恰好有特定字符的 X 个计数
- javascript - 具有特定变量的唯一 ID,以使用所述变量调用数组中的函数
- python - Python pandas 总结了数据框中的往返行程
- swift - 如何为具有给定前缀的 URL 提供文件?