比如我想将由
m
组成的字符串匹配到 n
汉字,那么我可以使用:
[single Chinese character regular expression]{m,n}
有没有单个汉字的正则表达式,可以是任何存在的汉字?
匹配中文(好吧,CJK)字符的正则表达式是
\p{script=Han}
可以简单理解为
\p{Han}
这假设您的正则表达式编译器满足 要求 RL1.2 UTS#18 Unicode 正则表达式的属性。 Perl 和 Java 7 都满足该规范,但许多其他语言不满足。
在爪哇,
\p{InCJK_UNIFIED_IDEOGRAPHS}{1,3}
在 C# 中
new Regex(@"\p{IsCJKUnifiedIdeographs}")
它位于 Microsoft 文档
以下是来自维基百科的更多信息:CJK 统一表意文字
名为“中日韩统一表意文字”(4E00–9FFF) 的基本块包含 U+4E00 到 U+9FEF 范围内的 20,976 个基本汉字。该块不仅包括中文书写系统中使用的字符,还包括日语书写系统中使用的汉字和汉字(汉字在韩国的使用正在减少)。该块中的许多字符在所有三种书写系统中都使用,而其他字符仅在三种书写系统中的一种或两种中使用。越南的 Nôm 文字也使用汉字(现已废弃)。
\u4E00-\u9FFF
适用于:Python、现代 Javascript、Golang、Rust 但不适用于 PHP。
如果您的语言不支持其他答案中的
{Han}
/{script=Han}
/{IsCJKUnifiedIdeographs}
等符号,则很有用。
注意:这对应于 CJK 统一表意文字,并包括韩语、日语和越南语等其他语言。
在 Java 7 及更高版本中,格式应为:“\p{IsHan}”
就像这样:
package main
import (
"fmt"
"regexp"
)
func main() {
compile, err := regexp.Compile("\\p{Han}") // match one any Chinese character
if err != nil {
return
}
str := compile.FindString("hello 世界")
fmt.Println(str) // output: 世
}