Ken*_*ams 5 python regex pycharm
我有一个函数,它接受一个字符串参数,该参数将被编译成一个正则表达式,如下所示:
class Pattern:
def __init__(self, pattern, **kwargs) -> None:
self.re = re.compile(pattern)
self.extras = dict(**kwargs)
... more methods ...
Run Code Online (Sandbox Code Playgroud)
当我初始化一个Pattern对象时,我会喜欢 PyCharm(实际上,我使用 IntelliJ IDEA 和 Python 插件,但我认为这本质上是同一个平台)知道我的pattern参数字符串应该符合 Python 的正则表达式语法,并且可以语法高亮,就像使用时一样re.compile(pattern):
# 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})')
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在这里给 IDE 一个提示,无论是作为pattern参数传递给Pattern应该具有正则表达式语法?理想情况下,我可以将某种提示注释或类型提示放入代码中,以便其他开发人员也能使用。
我知道:
Pattern(...)- 但这是暂时的,当有很多此类调用时会很乏味,并且它不会帮助其他开发人员更轻松地阅读代码。编辑:
这个问题是“ Can one automatic get Intellij's regex help for one's own regex parameters ”的直接类比,但是对于Python而不是Java。该答案中的IntelliLang解决方案似乎仅适用于编辑 Java 或 XML 文件。
我找到了一种方法,但效果并不像我想象的那么顺利。
File - Settings - Editor - Language Injections - Add:
Generic PythonRegExp+ pyLiteralExpression().and(pyMethodArgument("Pattern", 0, "foo.bar.Pattern"))
现在RegExp将被注入到 的参数中Pattern。
下一步是分享这个注入。注入是使用IDE-level 范围创建的,并且存储在IDE无法共享的设置中。
要将此注入放入项目设置中,您必须将注入移至Project-level 范围(相应的按钮位于添加注入的按钮下方),但随后它会停止工作:( 唯一的方法是Export-Import注入,但这并不方便:(
请随意在这里创建一个问题。