Python PyCharm:函数参数的正则表达式字符串意图

Python PyCharm:函数参数的正则表达式字符串意图,python,regex,pycharm,Python,Regex,Pycharm,我有一个函数,它接受一个字符串参数,该参数将被编译成正则表达式,如下所示: class Pattern: def __init__(self, pattern, **kwargs) -> None: self.re = re.compile(pattern) self.extras = dict(**kwargs) ... more methods ... 当我初始化模式对象时,我希望PyCharm(实际上,我在Python插件中使用In

我有一个函数,它接受一个字符串参数,该参数将被编译成正则表达式,如下所示:

class Pattern:
    def __init__(self, pattern, **kwargs) -> None:
        self.re = re.compile(pattern)
        self.extras = dict(**kwargs)

    ... more methods ...
当我初始化
模式
对象时,我希望PyCharm(实际上,我在Python插件中使用IntelliJ IDEA,但我认为这基本上是同一个平台)知道我的
模式
参数字符串应该符合Python的正则表达式语法,并且可以突出显示语法,就像使用
重新编译(模式)
时一样:

#这不会被视为正则表达式的意图:
p1=模式(r'^(?P[A-Z]{4})。(?P\d{4})
#但这将:
p2=重新编译(r'^(?P[A-Z]{4})。(?P\d{4})
这里有没有办法给IDE一个提示,作为
pattern
参数传递给
pattern
的任何东西都应该有regex语法?理想情况下,我可以在代码中加入某种提示注释或类型提示,这样其他开发人员也可以使用

我知道:

  • 我可以为此创建一个插件-在我的情况下,这可能是巨大的过度杀伤力
  • 我可以为任何对
    模式(…)
    的特定调用临时进行“注入语言或引用”-但这是暂时的,当有很多这样的调用时,这很乏味,而且它不能帮助其他开发人员更容易地阅读代码
编辑:


这个问题直接类似于“”,但它是针对Python而不是Java的。这个答案中的解决方案似乎只适用于编辑Java或XML文件。

我找到了一种方法,但效果不如我预期的那么顺利

文件-设置-编辑器-语言注入-添加

  • 通用Python
  • ID:
    RegExp
  • 放置模式:
+pyLiteralExpression()和(pyMethodArgument(“Pattern”,0,“foo.bar.Pattern”))

现在,
RegExp
将被注入到
Pattern
的参数中

下一步是分享这种注射。注入是使用
IDE
级别的作用域创建的,它存储在
IDE
设置中,无法共享

要将此注入放到项目设置中,您必须将注入移动到
项目
级别的范围(相应的按钮位于添加注入的按钮下方),但随后它停止工作:(唯一的方法是
导出
-
导入
注入,但这并不方便:(


请随意创建一个问题。

这几乎是上述问题的重复,但我正在使用Python,而且那里的解决方案仅适用于Java。将更新问题。我想你是对的。奇怪的是,他们只支持Java。具有这种行为的方法集是硬编码的。请在,
Pattern
应该添加到它们中。@user2235698-这不是一个选项,
Pattern
是我自己创建的一个类(在我的真实代码中,我实际上将其重命名为
Rule
).这里是行为硬编码的位置。我只是想抛开不必要的希望,找到一个完全可以在Python项目的代码库中完成的解决方法。
# This won't be recognized as a regex intention:
p1 = Pattern(r'^(?P<site>[A-Z]{4}).(?P<unit>\d{4})')
# But this will:
p2 = re.compile(r'^(?P<site>[A-Z]{4}).(?P<unit>\d{4})')