对于Python中的Unipre正则表达式,我强烈建议以下内容:
- 使用 Matthew Barnett的
regex
库而不是standardre
,它实际上并不适合Unipre正则表达式。 - 只使用Python 3,不要使用Python2。您希望所有字符串都是Unipre字符串。
- 仅使用具有逻辑/抽象Unipre代码点的字符串文字,而不使用编码的字节字符串。
- 在流上设置编码,而不必理会。如果您发现自己曾经手动打电话
.enpre
等等,那几乎可以肯定是做错了什么。 - 仅在代码点和代码单元相同的情况下使用宽泛的构建,永远不要在狭窄的基础上进行构建—考虑使用Unipre健壮性,不妨考虑这样做。
- 将所有传入的字符串归一化为NFD,然后归一化为NFC。否则,您将无法获得可靠的行为。
完成此操作后,您可以安全地编写包含
wor
p{script=Latin}或p{alpha}andp{lower}等的模式,并且知道它们都将按照Unipre标准的规定进行操作。我将在此答案中更详细地解释PythonUnipre regex业务的所有业务。简短的故事是永远
regex不要使用
re。
对于一般的Unipre建议,我在上一届OSCON上也有几篇关于Unipre正则表达式的演讲,除了第3篇演讲以外,大部分都与Python无关,但其中许多内容都是可以适应的。
最后,总会有这样的答案将对上帝(或至少对Unipre的恐惧)的想法带入您的内心。



