大概两年前,在 Golang正则表达式使用及简单示例
中提到了在正则表达式中使用 /p{Lu}
来匹配Unicode 类别或 Unicode 块:
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 列别表。把一些常用的类别和命名块列举如下:
类别 | 描述 |
---|---|
Ll | 小写字母 |
Lu | 大写字母 |
Lt | 首字母大写字母 |
Lo | 其他字母(注音字母、表意文字等) |
L | 字母,== Lu | Ll | Lt | Lm | Lo |
Sm | 数学符号 |
Sc | 货币符号 |
比较遗憾的是,目前还没有专门的 Emoji
类别。因此,目前如果你想匹配 Emoji 表情的话,还是需要写 Unicode 范围表达式,诸如 [/x{1F600}-/x{1F6FF}|[/x{2600}-/x{26FF}]
,来匹配表情符号。
名称 | 描述 |
---|---|
Greek | 希腊语 |
Han | 汉语 |
Tibetan | 藏语 |
Thai | 泰语 |
Latin | 拉丁语 |
Hebrew | 希伯来语 |