2

正则表达式\w似乎忽略了我的 Unicode 字符串。我创建了以下函数:
extras.py

# -*- coding: utf-8 -*-
def test(word):
    print re.sub(r'[^\w]+', '', word, re.U)

并从 django shell:

import extras
extras.test(u'שלום')

在本例中,输出是一个空字符串,而它应该与输入相同。
正则表达式的目的是只保留字母数字字符,但它不起作用。但它适用于 ASCII。

可能是什么问题?

4

1 回答 1

3

对模式使用原始 unicode 字符串,并确保使用flags参数:

# -*- coding: utf-8 -*-
def test(word):
    print re.sub(ur'[^\w]+', u'', word, flags=re.U)

然后:

In [9]: test(u'Ã')
Ã
于 2012-07-31T20:43:17.487 回答