大概两年前,在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 | 希伯来语 |