正则表达式和unicode

时间:2008-08-18 09:41:14

标签: python regex unicode character-properties

我有一个解析电视剧集文件名的脚本(例如show.name.s01e02.avi),抓取剧集名称(来自www.thetvdb.com API)并自动将它们重命名为更好的名称(显示名称) - [01x02] .avi)

该脚本运行正常,直到您尝试在具有Unicode显示名称的文件上使用它(我从未真正考虑过的事情,因为我拥有的所有文件都是英文的,所以大部分都非常都属于{ {1}})

如何让正则表达式匹配重音字符和喜欢?目前正则表达式的配置部分看起来像..

[a-zA-Z0-9'\-]

4 个答案:

答案 0 :(得分:16)

[\u0000-\uFFFF]的子范围用于您想要的内容。

您还可以使用re.UNICODE编译标志。 The docs表示如果设置UNICODE,则\w将匹配字符[0-9_]以及Unicode字符属性数据库中分类为字母数字的内容。

另见http://coding.derkeiler.com/Archive/Python/comp.lang.python/2004-05/2560.html

答案 1 :(得分:5)

Python的re模块不支持\ p {Letter}或\ X.但是,new regex implementation on PyPI会这样做。

答案 2 :(得分:4)

在Jeffrey Friedl(伟大的书)掌握正则表达式时,提到你可以使用\ p {Letter}来匹配被认为是字母的unicode东西。

答案 3 :(得分:0)

\ X似乎在某些语言中可用作通用字符,它允许您匹配单个字符,而不考虑它占用的字节数。可能有用。