作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果范围的一个或两个端点在 BMP 之外,正则表达式中字符范围的预期语义到底是什么?我观察到以下输入在 Python 2.7 和 3.5 中的行为不同:
import re
bool(re.match(u"[\u1000-\U00021111]", "\u1234"))
在我的 2.7 中,我得到了 False
,在 3.5 中,我得到了 True
。后者对我来说很有意义。前者可能是由于 \U00021111
被代理对 \ud844\udd11
表示,但即便如此我还是不明白,因为 \u1000-\ud844
应该包括 \u1234
就好了。
最佳答案
只需在输入字符串中使用 u
前缀即可告诉 Python 这是一个 Unicode 字符串:
>>> bool(re.match(u"[\u1000-\U00021111]", u"\u1234")) # <= See u"\u1234"
True
在 Python 2.7 中,每次处理字符串时都需要将它们解码为 Unicode。在 Python 3 中,默认情况下所有字符串都是 Unicode,并在 docs 中说明。 .
关于涉及星体平面的 unicode 范围的 Python 语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763476/
我是一名优秀的程序员,十分优秀!