⽤正则表达式匹配汉字,完整总结提到⽤正则表达式匹配汉字,很容易搜到这个[\u4e00-\u9fa5],但是它不算全⾯,不包含⼀些⽣僻汉字。
本⽂对此问题做⼀个梳理。
以下是⽐较全⾯的汉字Unicode 分布,参考Unicode 10.0标准(2017年6⽉发布):
区块范围
实际汉字个数/备注正则式4E00-62FF, 6300-77FF,
7800-8CFF, 8D00-9FFF.
20,971常见[\u4E00-\u9FFF] 或[⼀- ]3400-4DBF.
6,582罕见[\u3400-\u4DBF]
20000-215FF, 21600-230FF,23100-245FF, 24600-260FF,26100-275FF, 27600-290FF,29100-2A6DF.
42,711
罕见,历史
[\U00020000-\U0002A6DF]2A700-2B73F.
4,149罕见,历史[\U0002A700-\U0002B73F]2B740–2B81F.
222不常见,仍在使⽤[\U0002B740-\U0002B81F]2B820–2CEAF.
5,762罕见,历史[\U0002B820-\U0002CEAF]2CEB0-2EBEF.
7,473罕见,历史[\U0002CEB0-\U0002EBEF]F900–FAFF.
472重复、可统⼀变体、公司定义 [\uF900-\uFAFF]2F800-2FA1F.
542可统⼀变体[\U0002F800-\U0002FA1F]
★ 如果想表⽰最普遍的汉字,⽤:
正则匹配是什么[\u4E00-\u9FFF] 或 [⼀- ]
共有20950个汉字,包括了常⽤简体字和繁体字,镕等字。基本就是的所有(21003个)汉字。也包括了的所有(13053个)繁体汉字。
⼀般情况下这个就够⽤了。
★ 如果想表⽰BMP 之内的汉字,也就是
Unicode 值<=0xFFFF 之内的所有汉字,⽤:
[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF]
这个包含但不限于GBK 定义的汉字,共有28025个汉字。
★ 如果想尽可能表⽰所有的汉字,⽤:
[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF\U00020000-U0002EBEF]
这个包含上表的所有88342个汉字
说明:
1, 以上正则表达式不会匹配(英⽂、汉字的)标点符号,不会匹配韩国拼⾳字、⽇本假名。
2, 会匹配⼀些⽇本、韩国独有的汉字。
3, 包含了⼀些没有汉字的空位置,这通常不碍事。
4, \u及\U的正则语法在Python 3.5上测试通过。
有些正则表达式引擎不认\u FFFF和\U FFFFFFFF这样的语法,可以换成\x{FFFF}试⼀下;有些不⽀持BMP之外的范围,这就没办法处理CJK统⼀汉字扩展B~E 区了,如notepad++。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论