为什么PEP 0263正则表达式中的`.`?

dot*_*hen 4 python regex syntax pep

PEP 0263中,定义Python文件编码的格式定义为:

coding[:=]\s*([-\w.]+)
Run Code Online (Sandbox Code Playgroud)

为什么.在正则表达式中,或者为什么存在-\w?到目前为止,我明白了,.匹配除换行符之外的任何字符,所以无论是[-\w][.]将匹配的法律名称,其中包括字母数字字符和破折号.

将两者-\w同时.指定在一起的原因是什么[-\w.]

the*_*eye 7

当您在字符类中使用.-时,它们的行为都不同.在字符类中,.没有特殊含义,只会被视为点,其中-可以用来指定范围a-zA-Z0-9.

既然我们不使用-代表一系列在这种情况下,无论是.-将只匹配自己.它们没有特殊意义.

还要注意,\w可以定义为[a-zA-Z0-9_].它只匹配下划线字符(_)而不是短划线(-).

引用Python RegEx文档,

\ W

如果未指定LOCALEUNICODE标志,则匹配任何字母数字字符和下划线; 这相当于集合[a-zA-Z0-9_].使用时LOCALE,它将匹配集合[0-9_]以及为当前区域设置定义为字母数字的任何字符.如果UNICODE设置,则将匹配字符[0-9_]加上Unicode字符属性数据库中分类为字母数字的内容.