gpt4 book ai didi

python - 如何使用在正则表达式中使用多个 unicode 点的字母表?

转载 作者:行者123 更新时间:2023-12-04 04:05:01 26 4
gpt4 key购买 nike

上下文:以下表达式是为泰米尔语文本编写的'^[சிகு]'是以 'சி' or 'கு' 开头的行的预期表达式就像英语一样'^[ab]'匹配以 'a' or 'b' 开头的行
但由于 Unicode 用多个代码点表示一些东方语言 '^[ச,ி,க,ு]' (为了清楚起见使用逗号)சி -> ச,ிகு -> க,ு在 python 中对几个词运行表达式,给出以下结果(你可以看到完整的结果 here)。
注意:使用这个表达式'^(சி|கு)'可以得到预期的结果但这适用于这种特定情况,但是如果我想编写表达式来匹配 சிசிசிகுகுசிகு 怎么办? ?无论如何要表达'^[சிகு]+'匹配 சிசிசிகுகுசிகு ??
snapshot of the results
为了便于使用,我在此处添加了文本示例。
预期的:

குல்
குழை
குறை
சிலை
குறி
குரு
சிறை
குடி
குடை
குமை
சிதை
குலை
குளி
குவி
匹配:
கடி
கழி
கலி
கலை
கா
கோடு
குல்
சேர்
சரி
கை
கரை
சாய்
கடு
குழை
குறை
கோ
சுழி
1 https://gist.github.com/vanangamudi/591e311d709f5d5d6672a34d09b510cc

最佳答案

Python 中的字符类只匹配单个代码单元/点,那些可以与 \uXXXX 匹配的字符类或 \UXXXXXXXX符号。 Character classes不匹配字符序列。 Grouping constructs是为了做到这一点。
您有 多字节字符 包含多个代码单元,并且它们不能被重写为单个代码点,因此您将始终在字符类中的字符之间获得 OR 行为,如您所描述的:[சிகு] (被正则表达式引擎视为 [ச,ிக,ு] 将匹配类中定义的四个字符之一,而不是两个字符序列中的任何一个。
匹配字符序列 ,就像多字节字符中的代码单元一样,您必须使用分组结构:

சி|கு
(?:சி|கு)
(சி|கு)

关于python - 如何使用在正则表达式中使用多个 unicode 点的字母表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62671791/

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