正则表达式中匹配 Unicode 的常用类别和命名块

大概两年前,在 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 列别表。把一些常用的类别和命名块列举如下:

常用 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 希伯来语

扩展阅读

  • Unicode 常规类别
  • Unicode 命名块
  • Unicode General Category Values

原文 

https://liudanking.com/design-pattern/正则表达式中匹配-unicode-的常用类别和命名块/

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 正则表达式中匹配 Unicode 的常用类别和命名块

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址