在PEP 0263中,定义Python文件编码的格式定义为:
coding[:=]\s*([-\w.]+)
为什么正则表达式中有.
,或者为什么-
和\w
?据我了解,.
匹配除换行符之外的任何字符,因此[-\w]
或[.]
与合法名称匹配,后者由字母数字字符和短划线组成< /强>
在-\w
中同时指定.
和[-\w.]
的原因是什么?
答案 0 :(得分:7)
在角色类中使用.
和-
时,它们的行为都不同。在字符类中,.
没有特殊含义,只会被视为点,其中-
可用于指定a-zA-Z0-9
等范围。
由于在这种情况下我们不使用-
来表示范围,因此.
和-
都只会匹配自己。它们没有特殊意义。
另请注意,\w
可以定义为[a-zA-Z0-9_]
。它仅匹配下划线字符(_
)而不匹配短划线(-
)。
\ W
如果未指定
LOCALE
和UNICODE
标志,则匹配任何字母数字字符和下划线;这相当于集合[a-zA-Z0-9_]
。对于LOCALE
,它将匹配集[0-9_]
以及为当前区域设置定义为字母数字的任何字符。如果设置了UNICODE
,则会匹配字符[0-9_]
以及Unicode字符属性数据库中分类为字母数字的字符。