是否有关于应如何使用正则表达式的 Pythonic“标准”?
我通常做的是在我的模块顶部执行一堆 re.compile 语句,并将对象存储在全局变量中……然后在我的函数和类中使用它们。
我可以在我将要使用它们的函数中定义正则表达式,但它们每次都会被重新编译。
或者,我可以完全放弃重新编译,但如果我多次使用相同的正则表达式,重新编译似乎会产生不必要的开销。
最佳答案
一种更简洁的方法是使用字典:
PATTERNS = {'pattern1': re.compile('foo.*baz'),
'snake': re.compile('python'),
'knight': re.compile('[Aa]rthur|[Bb]edevere|[Ll]auncelot')}
这将解决您的命名空间被污染的问题,而且对于查看您的代码的任何人来说,PATTERNS 是什么以及将用于什么,它都非常明显,并且它满足全局变量的 CAPS 约定。此外,您可以轻松地调用 re.match(PATTERNS[pattern])
,或者您的逻辑要求的任何内容。
关于Python正则表达式风格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3188024/