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

时间:2018-08-03 01:43:22

标签: python regex pycharm

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

ValueChanged

当我初始化class Pattern: def __init__(self, pattern, **kwargs) -> None: self.re = re.compile(pattern) self.extras = dict(**kwargs) ... more methods ... 对象时,我很喜欢PyCharm(实际上,我将IntelliJ IDEA与Python插件一起使用,但我认为基本上是同一平台)知道我的{{1 }}参数字符串应符合Python的正则表达式语法,并且可以突出显示语法,就像使用Pattern时一样:

pattern

这里有什么方法可以给IDE提示吗,作为re.compile(pattern)的{​​{1}}参数传递的内容都应具有正则表达式语法?理想情况下,我可以在代码中添加某种提示注释或类型提示,以便它也适用于其他开发人员。

我确实知道:

  • 我可以为此创建一个插件-在我看来,这可能是一个过大的杀伤力。
  • 对于# 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})') 的任何特定调用,我都可以临时进行“注入语言或参考”-但这是暂时的,当有很多此类调用时,这很乏味,并且无济于事其他开发人员更轻松地阅读代码。

编辑:

该问题与“ Can one automatically get Intellij's regex assistance for one's own regex parameters”的直接相似,但适用于Python而不是Java。该答案中的IntelliLang解决方案似乎仅适用于编辑Java或XML文件。

1 个答案:

答案 0 :(得分:1)

我找到了一种方法,但是它的工作并不像我预期的那么顺利。

File - Settings - Editor - Language Injections - Add

  • Generic Python
  • ID:RegExp
  • 位置模式:

+ pyLiteralExpression().and(pyMethodArgument("Pattern", 0, "foo.bar.Pattern"))

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

下一步是共享此注入。注入是在IDE级范围内创建的,并且存储在IDE设置中,无法共享。

要将此注入置于项目设置中,您必须将注入移至Project级范围(对应的按钮位于添加注入的按钮下方),然后它停止工作:(唯一的方法是{{1 }}-Export注入,但不方便:(

随时创建问题here