码迷,mamicode.com
首页 > 其他好文 > 详细

用正则表达式匹配汉字,完整总结

时间:2016-04-25 22:29:47      阅读:1264      评论:0      收藏:0      [点我收藏+]

标签:

提到用正则表达式匹配汉字,很容易搜到这个[\u4e00-\u9fa5],但是它不算全面,不包含一些生僻汉字。

本文对此问题做一个梳理。

 

以下是比较全面的汉字Unicode分布,截止Unicode 8.0标准(2015年6月):

区块 范围 实际汉字个数 正则式
CJK统一汉字

4E00-62FF, 6300-77FF,

7800-8CFF, 8D00-9FFF.

20,950 [\u4E00-\u9FFF]
CJK统一汉字扩展A区 3400-4DBF. 6,582 [\u3400-\u4DBF]
CJK兼容汉字 F900–FAFF. 472 [\uF900-\uFAFF]
CJK统一汉字扩展B区

20000-215FF, 21600-230FF,

23100-245FF, 24600-260FF,

26100-275FF, 27600-290FF,

29100-2A6DF.

42,711 [\U00020000-\U0002A6D6]
CJK统一汉字扩展C区 2A700-2B73F. 4,149  [\U0002A700-\U0002B73F]
CJK统一汉字扩展D区 2B740–2B81F. 222 [\U0002B740-\U0002B81F]
CJK统一汉字扩展E区 2B820–2CEAF. 5,762 [\U0002B820-\U0002CEAF]

 

如果想表示最普遍的汉字,用:

[\u4E00-\u9FFF]

 

如果想表示BMP之内的汉字,也就是Unicode值<=0xFFFF,用:

[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF]

这个包含但不限于GBK定义的汉字

 

如果想表示尽可能所有的汉字,用:

[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF\U00020000-\U0002CEAF]

这个包含上表的8万多个汉字

 

说明:

1, 以上正则表达式不会匹配(英文、汉字的)标点符号

2, 包含了一些没有汉字的空位置,这个无所谓。

3, 在Python 3.5上测试通过。

用正则表达式匹配汉字,完整总结

标签:

原文地址:http://www.cnblogs.com/animalize/p/5432864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!