带有Python2的正则表达式中的Unicode类

带有Python2的正则表达式中的Unicode类,python,regex,Python,Regex,可能吗 此代码在Python3中工作: In [1]: import re In [2]: re.split(r'\W+', 'Les Misérables') Out[2]: ['Les', 'Misérables'] In [1]: import re In [2]: re.split(r'\W+', u'Les Misérables') Out[2]: [u'Les', u'Mis', u'rables'] 但它在Python2中不起作用: In [1]: import re I

可能吗

此代码在Python3中工作:

In [1]: import re

In [2]: re.split(r'\W+', 'Les Misérables')
Out[2]: ['Les', 'Misérables']
In [1]: import re

In [2]: re.split(r'\W+', u'Les Misérables')
Out[2]: [u'Les', u'Mis', u'rables']
但它在Python2中不起作用:

In [1]: import re

In [2]: re.split(r'\W+', 'Les Misérables')
Out[2]: ['Les', 'Misérables']
In [1]: import re

In [2]: re.split(r'\W+', u'Les Misérables')
Out[2]: [u'Les', u'Mis', u'rables']
这也不起作用(在Linux上使用
es_es.UTF-8
locale进行测试):

有没有办法让正则表达式在Python2中使用Unicode


注意:问题是关于获取Unicode感知匹配。我知道我可以只使用ASCII类将上述正则表达式重写为单独的单词。

您的错误是在错误的位置添加了标志(标志应该是第四个参数)


为了避免这些问题,我建议使用内联标志(如上面的
(?u)
)。

对,我错放了Unicode标志。不知道
(?u)
表达式。似乎很有用。您可以使用
flags=re.U
关键字参数。