这里有奇怪的小问题,
我有孟加拉语(随机)句子:"তিনি কবিতা প্রিয়, সুগঠিত স্বাস্থ্যের অধিকারী।"
我尝试在其上运行正则表达式(使用Pythonre
库)像这样:
re.search(r"\bসুগঠিত\b", "তিনি কবিতা প্রিয়, সুগঠিত স্বাস্থ্যের অধিকারী।") : <re.Match object; span=(19, 25), match='সুগঠিত'>
re.search(r"\bকবিতা\b", "তিনি কবিতা প্রিয়, সুগঠিত স্বাস্থ্যের অধিকারী।"): None
知道为什么会发生这种情况吗?
更新(来自下面的答案建议):
如果你检查你的字符是什么কবিতা
包括(我喜欢使用这项服务),您将了解到最后一个字母是 U+09BE
, 这是一个孟加拉语元音符号AA
属于Mc(标记、空格组合)Unicode类别.
Note that McUnicode 类别 chars 不属于单词 charsre
正则表达式。 Pythonre
\w
火柴"Unicode 字母、表意文字、数字或下划线",其中“表意文字”指的是Mn(标记、非空格)Unicode 类别 only.
最后\b
正则表达式中的单词边界requires字符串的结尾,或者紧随其后的非单词字符AA
元音,因为单词边界出现在非单词之后AA
char.
因此,如果您需要将所有组合标记添加到单词边界中,则需要使用PyPi 正则表达式库 where 问题已解决:
'word' 字符的定义 (问题#1693050)
“单词”字符的定义已针对 Unicode 进行了扩展。它符合 Unicode 规范http://www.unicode.org/reports/tr29/
.
See the Python在线演示:
import regex
print( regex.search(r"\bকবিতা\b", "তিনি কবিতা প্রিয়, সুগঠিত স্বাস্থ্যের অধিকারী।") )
# => <regex.Match object; span=(5, 10), match='কবিতা'>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)