Python 3
>>> import re
>>>
>>> REGEX_KHMER = re.compile(r"[\u1780-\u17dd\u17e0-\u17e9\u17f0-\u17f9]+")
>>> value = "ហួយ"
>>>
>>> re.search(REGEX_KHMER, value)
<_sre.SRE_Match object; span=(0, 3), match='ហួយ'>
但在Python 2中
>>> import re
>>>
>>> REGEX_KHMER = re.compile(r"[\u1780-\u17dd\u17e0-\u17e9\u17f0-\u17f9]+")
>>>
>>> value = "ហួយ"
>>>
>>> re.search(REGEX_KHMER, value)
>>> reg = re.search(REGEX_KHMER, value)
>>> reg
>>>
我渴望Python 3的行为,但为什么regex模式不能匹配Unicode字符,如 ហួយ
但在Python 2中却能正常工作?
我你真的 必须 使用Python 2,这个应该可以在那里工作。
# coding=utf-8
import re
REGEX_KHMER = re.compile(ur"[\u1780-\u17dd\u17e0-\u17e9\u17f0-\u17f9]+", re.UNICODE)
value = ur"ហួយ"
match = re.search(REGEX_KHMER, value)
print(match.group(0))
所以
coding=utf-8
ur
表示这是一个utf-8的字符串。