Python正则表达式的命名约定?

non*_*nex 5 python regex naming naming-conventions

Python中的正则表达式是否有可接受的命名约定?或者,如果没有,有什么建议如何命名他们?通常我将它们命名为look_for_date或者,address_re但我读过几个在变量名中使用"_re"这样的后缀的地方并不好.对我来说,好像正则表达式需要的东西,以表明它是一个正则表达式,因为如果你只是把它命名date或者address,你不就能够做这样的东西,这似乎直观:

date = date_re.match(text)

jon*_*rpe 6

编译的正则表达式是常量,因此应该有一个UPPER_CASE_WITH_UNDERSCORES名称.我倾向于为他们所匹配的东西命名; 举一个我最近写的代码的例子:

import re

VALID_CLOSURE_PATTERN = re.compile(r'''
    ^\d{2}    # starts with two digits 0-9
    [NY]{4}$  # followed by four Y/N characters
''', re.IGNORECASE + re.VERBOSE)


class RoadClosure(object):

    def __init__(self, ..., closure_pattern):
        """Initialise the new instance."""
        if not VALID_CLOSURE_PATTERN.match(closure_pattern):
            raise ValueError('invalid closure pattern: {!r}'.format(closure_pattern))
       ...

...
Run Code Online (Sandbox Code Playgroud)

我认为这清楚地表明发生了什么,VALID_CLOSURE_PATTERN传达"这描述了我们认为是有效的封闭模式"和类似的行:

if not VALID_CLOSURE_PATTERN.match(closure_pattern):
Run Code Online (Sandbox Code Playgroud)

描述它接近简单英语的实际行动.所以在你的情况下,你可以写:

date = VALID_DATE.match(text)
Run Code Online (Sandbox Code Playgroud)