Python re引擎中的/[\x00-\x7F]/的保证行为

Python re引擎中的/[\x00-\x7F]/的保证行为,python,regex,python-3.x,language-lawyer,Python,Regex,Python 3.x,Language Lawyer,使用股票Python 3.5-3.x正则表达式引擎,我已经详尽地测试了正则表达式 re.compile(r"[\x00-\x7F]", re.UNICODE) re.compile(r"[^\x00-\x7F]", re.UNICODE) 匹配所有代码点为U+0000到U+007F的单个字符,不匹配其他字符,类似地,匹配正则表达式 re.compile(r"[\x00-\x7F]", re.UNICODE) re.compile(r"[^\x00-\x7F]", re.UNICODE)

使用股票Python 3.5-3.x正则表达式引擎,我已经详尽地测试了正则表达式

re.compile(r"[\x00-\x7F]", re.UNICODE)
re.compile(r"[^\x00-\x7F]", re.UNICODE)
匹配所有代码点为U+0000到U+007F的单个字符,不匹配其他字符,类似地,匹配正则表达式

re.compile(r"[\x00-\x7F]", re.UNICODE)
re.compile(r"[^\x00-\x7F]", re.UNICODE)
将所有单个字符与代码点U+0080到U+10FFFF匹配,不匹配其他字符。然而,我不知道这是有保证的还是只是一个意外。Python维护人员是否就Unicode模式下正则表达式字符类中范围表达式的含义发表过任何正式声明


官方对范围的确切语义相当模糊,在其他正则表达式实现中,例如,范围表达式和ASCII范围之外的字符之间的交互是明确未指定的。

在Python 3.x中,您不需要
re.UNICODE
,这是默认设置。它只影响速记字符类,如
\s
\d
\w
,单词边界
\b
@WiktorStribiżew是的,我知道。这是为了明确起见。为什么这应该是一个意外?在
U+10FFFF
之外没有字符。只要这仍然是上限,正则表达式就不会匹配更多。这里有什么问题?开发人员可能有这样的假设:字符超出
\x80-\x7f
范围。所以不管是什么角色。只是它不应该在那个范围内。@WiktorStribiżew是的,这正是我在寻找的对未来行为一致的承诺,或者明确拒绝做出这样的承诺。这是编程语言标准和文档的主要功能之一。根据我的经验,这一点都不反常。我认为这个问题的答案是,
re
模块的范围语义既没有确切的规范,也没有承诺将来不包含这样的规范。但很难找到任何证明某事物不存在的参考文献。