gpt4 book ai didi

python - 匹配任何语言的字母

转载 作者:太空狗 更新时间:2023-10-29 17:11:43 28 4
gpt4 key购买 nike

如何在 python 3 中使用正则表达式匹配来自任何语言的字母?

re.match([a-zA-Z]) 将匹配英文字符,但我希望同时支持所有语言。

我不想匹配 can't 中的 ' 或下划线或任何其他类型的格式。我确实希望我的正则表达式匹配:cantÅé

最佳答案

对于 Python 中的 Unicode 正则表达式,我强烈推荐以下内容:

  1. 使用 Matthew Barnett’s regex library而不是标准 re ,这不太适合 Unicode 正则表达式。
  2. 仅使用 Python 3,绝不使用 Python 2。您希望所有字符串都是 Unicode 字符串。
  3. 仅使用具有逻辑/抽象 Unicode 代码点的字符串文字,而不是编码字节字符串。
  4. 在您的流上设置编码,然后忘记它。如果您发现自己曾经手动调用 .encode因此,您几乎可以肯定做错了什么。
  5. 仅使用代码点和代码单元相同的宽构建,永远不要使用窄构建——为了 Unicode 的稳健性,您最好考虑弃用。
  6. 在传入时将所有传入字符串规范化为 NFD,然后在传出时规范化为 NFC。否则你无法获得可靠的行为。

完成此操作后,您可以安全地编写包含 \w 的模式或 \p{script=Latin}\p{alpha}\p{lower}等等,知道这些都会做什么 the Unicode Standard says they should .我更详细地解释了 Python Unicode 正则表达式业务的所有这些业务 in this answer .简短的故事是始终使用 regex不是re .

对于一般的 Unicode 建议,我还有 several talks from last OSCON关于 Unicode 正则表达式,其中大部分内容除了第 3 次单独讨论之外与 Python 无关,但其中大部分内容是可适应的。

最后,总有 this answer将对上帝(或至少对 Unicode)的敬畏放在心上。

关于python - 匹配任何语言的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7206499/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com