正则表达式匹配Unicode字符奇怪地使用不同的字符串

时间:2013-09-14 05:36:30

标签: python regex

好的,我在一些字符串上进行unicode正则表达式匹配。

这些是有问题的字符串。不是两个单独的行,而是两个单独的字符串。

\u2018Mummy\u2019 Reboot May Get \u2018Mama\u2019 Director

\u2018Glee\u2019 Star Grant Gustin to Play The Flash in \u2018Arrow\u2019 Season 2

我正在使用这个正则表达式来解析unicode引号中的标题。

regex = re.compile("\\u2018[^(?!\\u2018$)]*\\u2019",re.UNICODE)

使用regex.findall()返回我

['u2018Mama\\u2019']

['u2018Glee\\u2019', 'u2018Arrow\\u2019']

这提出了两个我无法弄清楚的问题。为什么不回归\ u2018,最初是哪个??

其次,有什么不同。我看不出来。最后,我用'取代\ u2018和\ u2019'。 然后使用这个正则表达式。

re.compile("'[^']*'")

它在两个字符串中都匹配。这有什么区别?我在unicode正则表达式中缺少什么?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

#coding=utf8

import re

s=u'''\u2018Mummy\u2019 Reboot May Get \u2018Mama\u2019 Director
\u2018Glee\u2019 Star Grant Gustin to Play The Flash in \u2018Arrow\u2019 Season 2'''
print s
regex = re.compile(ur"‘[^(?!‘$)]*’",re.UNICODE)
m = regex.findall(s)
print m

[u'\ u2018Mummy \ u2019',u'\ u2018Mama \ u2019',u'\ u2018Glee \ u2019',u'\ u2018Arrow \ u2019']