检查 Python 3 字符串中的非法代理

Bas*_*ani 5 regex unicode surrogate-pairs python-3.x

特别是在 Python 3.3 及更高版本中,使用简单匹配来检查孤儿代理是否足够:

re.search(r'[\uD800-\uDFFF]', s)
Run Code Online (Sandbox Code Playgroud)

基于这样的假设:所有合法代理都将被表示为星体代码点,因此不会匹配,从而排除非法代理,或者是否存在需要注意的警告和边缘情况?

bob*_*nce 3

对,那是正确的。代码单元 0xD800\xe2\x80\x930xDFFF 不表示宽 Unicode 字符串中的有效字符,并且在 Python 3.3+(遵循 PEP 393)中,所有 Unicode 字符串实际上都是宽的。

\n