有可能在python中键入提示已编译的正则表达式吗?

Kot*_*oto 13 python regex type-hinting

我想对预编译和存储的正则表达式列表使用自动完成,但似乎我不能导入_sre.SRE_Pattern类,并且我无法以编程方式将获取的类型从type()提供给a注释格式#type:classname或用于返回 - > classname样式提示

有没有办法从_sre.c中显式导入一个类?

Mic*_*x2a 16

您应该使用typing.Patterntyping.Match专门添加到打字模块中以适应此用例.

例:

from typing import Pattern, Match
import re

my_pattern = re.compile("[abc]*")  # type: Pattern[str]
my_match = re.match(my_pattern, "abbcab")  # type: Match[str]
print(my_match)
Run Code Online (Sandbox Code Playgroud)

  • Pycharm 肯定会抱怨并抱怨 re.compile 的类型是 _Regex(而不是 Typing.Pattern 或 Typing.Pattern[str]) (2认同)