首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正则表达式unicode字符不匹配

正则表达式unicode字符不匹配
EN

Stack Overflow用户
提问于 2016-08-26 15:48:26
回答 1查看 161关注 0票数 1

我正试图对一个包含一些特殊字符的文本使用正则表达式,比如à、èo、a等等。

代码语言:javascript
运行
复制
filter_2 = ur'(?:^\|\s+)?(?:(?:main_interests)|(?:influenced)|(?:influences))\s+?=[\s\W]+?(?:[\w}])*?([\d\w\s\-()*–&;\[\]|.<>:/",\']*)(?=\n)'
compiled = re.compile(filter_2, flags=re.U | re.M)
filter_list = re.findall(compiled, information)

下面的案文是对表达式进行评估的结果。

[Pedro Calderón de la Barca连Calderón],[Christian Fürchte歌特Gellert Gellert],[Oliver Goldsmith x Goldsmith],[Hafez],[Johann Gottfried Herder Herder],[荷马],[Kālidā],[Kant],[Friedrich Gottlieb Klopstock Klopstock],[Gotthold Ephraim Lessing Lessing],[Carl Linnaeus x Linnaeus],[詹姆斯·麦克森·麦克弗森],[让·雅克·卢梭·卢梭],[弗里德里希·席勒·席勒],威廉·莎士比亚,莎士比亚[莎士比亚],莎士比亚,[斯马纽尔·埃菲诺伊姆·莱辛·莱辛],[卡尔·林纳乌斯],[詹姆斯·麦克森·麦克弗森],[让·雅克·卢梭·卢梭],[弗里德里希·席勒·席勒],威廉·莎士比亚,莎士比亚[莎士比亚],莎士比亚[斯马纽尔·埃菲诺伊姆·莱辛],罗伯特·斯威德·斯威德·斯威德堡[罗伯特·斯威德沃斯]。2.版本。第1卷:“1764-1786年简讯”。“‘Christian Wegner’”,汉堡,1968年,第709页[Johann Joachim Winckelmann=Winckelmann]

现在,当我试图在上面的文本上使用另一个正则表达式来推断方括号中的单词时,结果是错误的。所有代表一个特殊性质的词语,如àa或èe,都被删除,其结果并不是预期的那样。

代码语言:javascript
运行
复制
filter_6 = ur'(?<=\[\[)([\w\s.-]+)((?=]])|(?=|))'
another_compiled = re.compile(filter_6, flags=re.U | re.M)
another_filtered_list = re.findall(another_compiled, (str(filter_list)))

以下是我的研究结果:

('Pedro Calder',''),('Christian F',''),('Oliver Goldsmith',''),('Hafez',''),‘,''),’‘,(“詹姆斯·麦克弗森”、“”)、“让-雅克·卢梭”、“”、“弗里德里希·席勒”、“”、“威廉·莎士比亚”、(“斯宾诺莎”、“”)、(“伊曼纽尔·斯威登堡”、“”)、(“卡尔·罗伯特·曼德考”、“)、”、“约翰·乔希姆·温克尔曼”、“”、“托马斯·卡莱尔”、“”、“恩斯特·卡西耶”、“查尔斯·达尔文”,‘),('Sigmund Freud',''),('G',''),('Andr',''),('Hermann Hesse',''),('G.W.F. Hegel',''),('Muhammad Iqbal',''),('Daisaku Ikeda',''),('Carl Gustav Jung',’),‘’,‘,’‘,’(“让-巴蒂斯特·拉马克”、“”)、“乔阿金·玛丽亚·马查多·德阿西斯”、“”、“托马斯·曼”、“”(“弗里德里希·尼采”、“”)、“法国前”、“”(“格里戈·罗巴基泽”、“”)、“弗里德里希·席勒”、“奥斯瓦尔德·斯宾格勒”、(“马克斯·斯特纳”、“”)、“弗里德里希·威廉·约瑟夫·谢林”、“弗里德里希·威廉·约瑟夫·谢林”、(“亚瑟叔本华”、“”)、“奥斯瓦尔德·斯宾格勒”、“鲁道夫·施泰纳”、“亨利·大卫·梭罗”、“”(“尼古拉·特斯拉”、“)、”(“伊凡·图根涅夫”、“”)、(“路德维希·维特根斯坦”)、(“理查德·瓦格纳”、“”)、(“利奥波尔德·冯·兰克”、“”)

这些是我想要达到的结果。

比赛1. 1. 2-28 Pedro Calderón de la Barca比赛2. 1. 43-72 Oliver Goldsmith比赛3. 1. 86-102 Oliver Goldsmith比赛4. 118-123 Johann Gottfried Herder比赛5. 1. 129-152 Johann Gottfried Herder比赛6. 1. 165-170 Homer比赛7. 176-184 Kālidāsa比赛8. 1. 190-194 Kant比赛9. 200-228Friedrich Gottlieb Klopstock比赛10 . 1. 244-268 Gotthold Ephraim Lessing比赛11 . 282-295 Carl Linnaeus比赛12 1. 310-326 Jean-Jacques Rousseau比赛13 1. 343-364 Jean-Jacques Rousseau比赛14 . 1. 379-397 Friedrich Schiller比赛15 . 412-431 William Shakespeare比赛16 . 449-456 Spinoza比赛17 . 462-480 Emanuel Swedenborg比赛18 1. 501-522 Karl Robert Mandelkow比赛19 1. 659-685 Johann Joachim Winckelmann

所有的正则表达式都是在线测试的,它们工作得很完美。有一种方法可以真正包含这些特殊的角色吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-26 15:56:56

Python3中,regex不编译。当我改变的时候,这似乎对我起了作用:

代码语言:javascript
运行
复制
filter_6 = ur'(?<=\[\[)([\w\s.-]+)((?=]])|(?=|))'

仅指向unicode (非原始)字符串:

代码语言:javascript
运行
复制
filter_6 = u'(?<=\[\[)([\w\s.-]+)((?=]])|(?=|))'

Python2中,我认为问题在于将列表转换为字符串。把str(filter_list)改成' '.join(filter_list)似乎对我有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39170123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档