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

使用re.VERBOSE模式时嵌入空格编译失败问题咨询

关于re.VERBOSE模式下正则编译报错的疑问

以下代码在使用re.VERBOSE标志编译时会抛出错误:

import re
re.compile(r"(?: *)", flags=re.VERBOSE)

报错信息:

re.error: nothing to repeat at position 4

但以下几种写法均可正常编译:

# 转义空格
re.compile(r"(?:\ *)", flags=re.VERBOSE)
# 使用字符类包裹空格
re.compile(r"(?:[ ]*)", flags=re.VERBOSE)
# 不使用VERBOSE标志
re.compile(r"(?: *)")

根据Python 3.9官方文档对VERBOSE模式的说明:

模式中的空白符会被忽略,但在*?、(?:或(?P<...>这类标记内的情况除外

但实际测试中,(?:)内部的空格依然被忽略了,导致正则表达式变为(?:*),进而触发“nothing to repeat”的错误。请问这是Python re库的bug,还是我对文档说明的理解存在偏差?

可复现该问题的环境:

  • Python 3.9.13 / MacOS 12.6.1 (Monterey)
  • Python 3.9.2 / Debian 11.5 (bullseye)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:41:31