Python unicode 正则表达式问题
Python unicode regex issue
为什么这样做:
>>> ss
u'\U0001f300'
>>> r = re.compile(u"[u'\U0001F300-\U0001F5FF']+", re.UNICODE)
>>> r.search(ss) # this works
<_sre.SRE_Match object at 0x7f359acf03d8>
但事实并非如此:
>>> r = re.compile("[u'\U0001F300-\U0001F5FF']+", re.UNICODE)
>>> r.search(ss) # this doesn't
根据下面 Ignacio 的回答,这也有效:
>>> r = re.compile(u"[\U0001F300-\U0001F5FF]+", re.UNICODE)
>>> r.search(ss)
<_sre.SRE_Match object at 0x7f359acf03d8>
在 unicode
大海捞针上执行搜索时使用 unicode
模式。
此外,"u'...'" 不应出现在模式中;无论如何,这些都是 Unicode 字符(在 unicode
中)。
为什么这样做:
>>> ss
u'\U0001f300'
>>> r = re.compile(u"[u'\U0001F300-\U0001F5FF']+", re.UNICODE)
>>> r.search(ss) # this works
<_sre.SRE_Match object at 0x7f359acf03d8>
但事实并非如此:
>>> r = re.compile("[u'\U0001F300-\U0001F5FF']+", re.UNICODE)
>>> r.search(ss) # this doesn't
根据下面 Ignacio 的回答,这也有效:
>>> r = re.compile(u"[\U0001F300-\U0001F5FF]+", re.UNICODE)
>>> r.search(ss)
<_sre.SRE_Match object at 0x7f359acf03d8>
在 unicode
大海捞针上执行搜索时使用 unicode
模式。
此外,"u'...'" 不应出现在模式中;无论如何,这些都是 Unicode 字符(在 unicode
中)。