在网上找了一圈,没找到方法
以下方法,在EmEditor中没用!
也就是除了[一-龥]基本区之外的,所有汉字,用正则匹配。
提到用正则表达式匹配汉字,很容易搜到这个[\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上测试通过。
補充編碼表
字符集 字数 Unicode 编码
基本汉字 20902字 4E00-9FA5
基本汉字补充 38字 9FA6-9FCB
扩展A 6582字 3400-4DB5
扩展B 42711字 20000-2A6D6
扩展C 4149字 2A700-2B734
扩展D 222字 2B740-2B81D
康熙部首 214字 2F00-2FD5
部首扩展 115字 2E80-2EF3
兼容汉字 477字 F900-FAD9
兼容扩展 542字 2F800-2FA1D
PUA(GBK)部件 81字 E815-E86F
部件扩展 452字 E400-E5E8
PUA增补 207字 E600-E6CF
汉字笔画 36字 31C0-31E3
汉字结构 12字 2FF0-2FFB
汉语注音 22字 3105-3120
注音扩展 22字 31A0-31BA
〇 1字 3007