大概两年前,在Golang正则表达式使用及简单示例中提到了在正则表达式中使用\p{Lu}来匹配Unicode 类别或 Unicode 块:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package main import (     "regexp"     "fmt" ) func foo(i int) *int {     a := i + 1     return &(a) } func main() {     reg := regexp.MustCompile(`\p{Lu}`)     fmt.Println(reg.MatchString("A")) } | 
但是,在日常使用的时候经常不知道自己要匹配的那个 Unicode 字符属于拿一个类别。于是翻了一下 Golang 所遵循的 RE2 列别表。把一些常用的类别和命名块列举如下:
常用 Unicode 常规类别
| 类别 | 描述 | 
|---|---|
| Ll | 小写字母 | 
| Lu | 大写字母 | 
| Lt | 首字母大写字母 | 
| Lo | 其他字母(注音字母、表意文字等) | 
| L | 字母,== Lu | Ll | Lt | Lm | Lo | 
| Sm | 数学符号 | 
| Sc | 货币符号 | 
比较遗憾的是,目前还没有专门的 Emoji 类别。因此,目前如果你想匹配 Emoji 表情的话,还是需要写 Unicode 范围表达式,诸如 [\x{1F600}-\x{1F6FF}|[\x{2600}-\x{26FF}],来匹配表情符号。
常用 Unicode 命名块
| 名称 | 描述 | 
|---|---|
| Greek | 希腊语 | 
| Han | 汉语 | 
| Tibetan | 藏语 | 
| Thai | 泰语 | 
| Latin | 拉丁语 | 
| Hebrew | 希伯来语 | 
