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

时间:2014-04-23 09:03:33

标签: python regex syntax pep

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

coding[:=]\s*([-\w.]+)

为什么正则表达式中有.,或者为什么-\w?据我了解,.匹配除换行符之外的任何字符,因此[-\w][.]与合法名称匹配,后者由字母数字字符和短划线组成< /强>

-\w中同时指定.[-\w.]的原因是什么?

1 个答案:

答案 0 :(得分:7)

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

由于在这种情况下我们不使用-来表示范围,因此.-都只会匹配自己。它们没有特殊意义。

另请注意,\w可以定义为[a-zA-Z0-9_]。它仅匹配下划线字符(_)而不匹配短划线(-)。

引自Python RegEx documentation

  

\ W

     

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