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

Regex 检查Python 3字符串中的非法代理,regex,python-3.x,unicode,surrogate-pairs,Regex,Python 3.x,Unicode,Surrogate Pairs,特别是在Python 3.3及更高版本中,使用简单匹配检查孤立代理是否足够: re.search(r'[\uD800-\uDFFF]', s) 基于所有合法代理人都有代表的假设 由于星体代码点,因此不匹配,不包括非法代理,或者存在需要注意的警告和边缘情况?是的,这是正确的。代码单元0xD800–0xDFFF在宽Unicode字符串中不表示有效字符,而在Python 3.3+(遵循PEP 393)中,所有Unicode字符串实际上都是宽的。我的Unicode不够流利,无法具体回答这个问题,但也许

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

re.search(r'[\uD800-\uDFFF]', s)
基于所有合法代理人都有代表的假设
由于星体代码点,因此不匹配,不包括非法代理,或者存在需要注意的警告和边缘情况?

是的,这是正确的。代码单元0xD800–0xDFFF在宽Unicode字符串中不表示有效字符,而在Python 3.3+(遵循PEP 393)中,所有Unicode字符串实际上都是宽的。

我的Unicode不够流利,无法具体回答这个问题,但也许最好的方法是实际解码字符串并检查错误?可能是确保没有边缘案例的最安全方法。