gpt4 book ai didi

python - 在正则表达式中使用阿拉伯字母的范围

转载 作者:太空狗 更新时间:2023-10-30 01:46:29 24 4
gpt4 key购买 nike

在 Python 中使用 Regex 时,很容易使用括号来表示字符范围 a-z,但这似乎不适用于其他语言,例如阿拉伯语:

import re
pattern = '[ي-ا]'
p = re.compile(pattern)

这会导致以

结尾的长错误报告
raise error("bad character range")
sre_constants.error: bad character range

如何解决这个问题?

最佳答案

由于阿拉伯字符是从右到左呈现的,所以下面的正确字符串,即“from ا to ي”是向后呈现的(如果要确认,请尝试选择字符串):

'[ا-ي]'

控制台输出:

>>> re.compile('[ا-ي]')
<_sre.SRE_Pattern object at 0x6001f0a80>

>>> re.compile('[ا-ي]', re.DEBUG)
in
range (1575, 1610)
<_sre.SRE_Pattern object at 0x6001f0440>

因此,您的模式 '[ي-ا]' 实际上是“从 يا”,这是一个无效范围,因为 ا 的代码点小于 ي 的代码点。

为了防止混淆,Ignacio Vazquez-Abrams 关于使用 Unicode 转义的建议是我上面提供的解决方案的一个很好的替代方案。

关于python - 在正则表达式中使用阿拉伯字母的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27685984/

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