4

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

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

为什么.正则表达式中有 a ,或者,为什么有-and \w?据我了解,.匹配除换行符以外的任何字符,因此[-\w]or or[.]将匹配由字母数字字符和破折号组成的合法名称。

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

4

1 回答 1

7

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

由于在这种情况下我们不使用-来表示范围,因此两者.-将仅匹配自己。它们不会有特殊含义。

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

引用Python RegEx 文档

\w

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

于 2014-04-23T09:05:33.530 回答