You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何正则表达式r'\b\w+(?=\d)(?=[A-Z])'无法匹配Python3A?

正则表达式匹配失败原因解析

你的正则表达式r'\b\w+(?=\d)(?=[A-Z])'无法匹配Python3A的核心问题在于连续正向预查的位置要求:

  • 正向预查(?=\d)要求匹配到的单词末尾的下一个位置必须是数字;
  • 紧接着的(?=[A-Z])要求同一个位置必须是大写字母。

但在Python3A中,Python末尾的下一个位置是字符3(数字),这个位置的字符是数字而非大写字母,两个预查条件无法同时满足,所以匹配失败。

你想要的逻辑是“单词后面紧跟数字和大写字母”,正确的写法应该是把两个条件合并成一个预查,检查单词后是否紧跟数字+大写字母的组合,比如:

r'\b\w+(?=\d[A-Z])'

这个正则会匹配Python,因为它后面的3A正好符合\d[A-Z]的规则,单个预查就能满足“后面紧跟数字和大写字母”的需求。

内容的提问来源于stack exchange,提问作者mon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:24:50