原文链接:关于unicode汉字范围正则的写法
原来我使用的一直是:
\u4e00-\u9fa5
今天在匹配中文标点的时候匹配不上,就查了一下相关资料,原来unicode跟中文有关的范围还有好几个。
字符范围表
1.标准CJK文字
范围:
\u3400-\u4DB5 \u4E00-\u9FA5 \u9FA6-\u9FBB \uF900-\uFA2D \uFA30-\uFA6A \uFA70-\uFAD9
说明:一共有好几个范围,除 u4e00-u9fa5外 都不是很常用 参考地址:http://www.unicode.org/Public/UNIDATA/Unihan.html
2.全角ASCII、全角中英文标点、半宽片假名、半宽平假名、半宽韩文字母
范围:
\uFF00-\uFFEF
改进后的匹配表达式
-
[\u3400-\u4DB5\u4E00-\u9FA5\u9FA6-\u9FBB\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFF00-\uFFEF\u2E80-\u2EFF\u3000-\u303F\u31C0-\u31EF]
(注:这条基本能满足要求)
-
[\u3400-\u4DB5\u4E00-\u9FA5\u9FA6-\u9FBB\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFF00-\uFFEF\u2E80-\u2EFF\u3000-\u303F\u31C0-\u31EF\u2F00-\u2FDF\u2FF0-\u2FFF\u3100-\u312F\u31A0-\u31BF\u3040-\u309F\u30A0-\u30FF\u31F0-\u31FF\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F\u4DC0-\u4DFF\uA000-\uA48F\uA490-\uA4CF\u2800-\u28FF\u3200-\u32FF\u3300-\u33FF\u2700-\u27BF\u2600-\u26FF\uFE10-\uFE1F\uFE30-\uFE4F]
(注:这是完整版本)
《“Unicode汉字范围[bak]”》 有 1 条评论
文字间的战斗与其救世主 Unicode
译自: https://itsfoss.com/unicode-linux/ 作者: Sylvain Leroux
原创: LCTT https://linux.cn/article-15483-1.html 译者: yzuowei
`
# 电脑是如何储存文字的?
计算机将字符作为数字储存。它们再通过表格将这些数字与含有意义的字形一一对应。
# Unicode 拯救了世界
我解释了不同国家间交换文件时会遇到的编码问题。但事情还能更糟,同一个国家的不同生产商未必会使用相同的编码。如果你在 80 年代用 Mac 和 PC 互传过文件你就懂我是什么意思了。
也不知道是不是巧合,Unicode[7] 项目始于 1987 年,主导者来自施乐Xerox和……苹果Apple 。
这个项目的目标是定义一套通用字符集来允许同一段文字中 同时 出现人类书写会用到的任何文字。最初的 Unicode 项目被限制在 65536 个不同字符(每个字符用 16 位表示,即每个字符两字节)。这个数字已被证实是远远不够的。
于是,在 1996 年 Unicode 被扩展以支持高达 100 万不同的 代码点code point[8]。粗略来说,一个“代码点”可被用来识别字符表中的一个条目。Unicode 项目的一个核心工作就是将世界上正在被使用(或曾被使用)的字母、符号、标点符号以及其他文字仓管起来,并给每一项条目分配一个代码点用以准确分辨对应的字符。
这是一个庞大的项目:为了让你有个大致了解,发布于 2017 年的 Unicode 版本 10 定义了超过 136,000 个字符,覆盖了 139 种现代和历史上的语言文字。
随着如此庞大数量的可能性,一个基本的编码会需要每个字符 32 位(即 4 字节)。但对于主要使用 US-ASCII 范围内字符的文字,每个字符 4 字节意味着 4 倍多的储存需求以及 4 倍多的带宽用以传输这些文字。
所以除了 UTF-32[9],Unicode 联盟还定义了更加节约空间的 UTF-16[10] 和 UTF-8[11] 编码,分别使用了 16 位和 8 位。但只有 8 位该如何储存超过 100,000 个不同的值呢?事实是,你不能。但这其中窍门在于用一个代码值(UTF-8 中的 8 位以及 UTF-16 中的 16 位)来储存最常用的一些字符。再用几个代码值储存最不常用的一些字符。所以说 UTF-8 和 UTF-16 是 可变长度 编码。尽管这样也有缺陷,但 UTF-8 是空间与时间效率之间一个不错的折中。更不用提 UTF-8 可以向后兼容大部分 Unicode 之前的 1 字节编码,因为 UTF-8 经过了特别设计,任何有效的 US-ASCII 文件都是有效的 UTF-8 文件。你也可以说,UTF-8 是 US-ASCII 的超集。而在今天已经找不到不用 UTF-8 编码的理由了。当然除非你书写主要用的语言需要多字节编码,或是你不得不与一些残留的老旧系统打交道。
# 而这些对于打字有什么用呢?
#
# 我们可以避免对 Gtk 字符组合的依赖吗?
#
# 如果我需要的字符没有对应的组合键排序该怎么办?
#
# 死键(Dead Key)
`
[1]: https://en.wikipedia.org/wiki/ISO/IEC_8859-15
[2]: https://en.wikipedia.org/wiki/KOI8-R
[3]: https://en.wikipedia.org/wiki/Windows-1251
[4]: https://en.wikipedia.org/wiki/ASCII
[5]: https://en.wikipedia.org/wiki/Email_client
[6]: https://en.wikipedia.org/wiki/Mojibake
[7]: https://en.wikipedia.org/wiki/Unicode
[8]: https://en.wikipedia.org/wiki/Code_point
[9]: https://en.wikipedia.org/wiki/UTF-32
[10]: https://en.wikipedia.org/wiki/UTF-16
[11]: https://en.wikipedia.org/wiki/UTF-8
[12]: https://en.wikipedia.org/wiki/Compose_key
[13]: https://en.wikipedia.org/wiki/Hyphen-minus
[14]: https://en.wikipedia.org/wiki/X_Input_Method
[15]: http://www.fileformat.info/info/unicode/char/3042/index.htm
[16]: http://www.fileformat.info/info/unicode/char/3086/index.htm
[17]: http://www.fileformat.info/info/unicode/char/307F/index.htm
[18]: https://en.wikipedia.org/wiki/Dead_key
[19]: https://help.ubuntu.com/community/GtkDeadKeyTable
[20]: https://www.yesik.it/
[21]: https://github.com/lkxed
[22]: https://github.com/yzuowei
[23]: https://github.com/wxy
[24]: https://github.com/LCTT/TranslateProject
[25]: https://linux.cn/article-15483-1.html?utm_source=rss&utm_medium=rss