python正则表达式匹配中文时遇到的坑

  • A+
所属分类:Python

 

python正则表达式匹配中文时遇到的坑

笔者在使用pythonre模块匹配中文时,遇到了许多坑,特此分享一下,希望对你有所帮助。

环境:ubuntu 16.04 python3.6

测试用例

场景是爬取电影的信息,需要匹配的字符串类似下面这种格式。

此字符串中即包含中英文,每一行最后是\n换行符,我们需要做的是将“电影”、“别名”、“主演”等后面的内容匹配出来。

匹配中文

我们要匹配的大部分是中文词语,用\w即可,此表达式可以匹配任意语言(不止英语)中的一组词,功能很强大。

例子:

结果:

[\\u4e00-\\u9fa5]是用来匹配一个中文字符的,也是可以使用的。

当然我们发现,并没有匹配到导演的完整的名字,因为“·”没有匹配到,完整的代码如下:

小提示:不知大家注意到没有,这个正则表达式\n自动停止了。

\x00-\xff是用来匹配双字节字符.

匹配中文及其标点

全角标记

在本文的字符串中“:”是全角字符,大家在写正则表达式中一定要注意。我在Ubuntu中使用的搜狗输入法,切换成中文后,仍然是半角字符,坑了我一下。

换行符

此字符串与文章开头的字符串看上去很相似,但其“电影”前、“剧情”后分别多出了换行符。

\W匹配不是词语的字符

结果:

其将换行符匹配出来了。

其他举例

结果:

结果

总结:正则表达式的使用,大家还是要多多实践,而且必须要认真仔细。

LTXU

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: