使用正则表达式匹配utf-8编码中的任何中文字符

xia*_*012 26 regex unicode non-english flex-lexer

例如,我想匹配组成的字符串mn中国的字符,然后我可以使用:

[single Chinese character regular expression]{m,n}
Run Code Online (Sandbox Code Playgroud)

是否存在单个汉字的正则表达式,可能是存在的任何汉字?

tch*_*ist 28

匹配中文(好吧,CJK)字符的正则表达式是

\p{script=Han}
Run Code Online (Sandbox Code Playgroud)

这可以简单地说明

\p{Han}
Run Code Online (Sandbox Code Playgroud)

这假设您的正则表达式编译器符合UTS#18 Unicode正则表达式中的RL1.2属性要求.Perl和Java 7都符合该规范,但许多其他规则都没有.

  • 它为Java-8提供了"未知字符属性名称{Han}".怎么了? (3认同)
  • @ xiaohan2012:我认为flex根本不支持unicode (2认同)
  • C#有这个变种吗? (2认同)

Day*_*ppy 7

在Java中

\p{InCJK_UNIFIED_IDEOGRAPHS}{1,3}
Run Code Online (Sandbox Code Playgroud)


Art*_*ous 6

在 C# 中

\n\n
new Regex(@"\\p{IsCJKUnifiedIdeographs}")\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是在Microsoft 文档中

\n\n

以下是来自维基百科的更多信息:CJK Unified Ideographs

\n\n

名为 CJK Unified Ideographs (4E00\xe2\x80\x939FFF) 的基本块包含 U+4E00 到 U+9FEF 范围内的 20,976 个基本汉字。该块不仅包括中文书写系统中使用的字符,还包括日语书写系统中使用的汉字和汉字(汉字在韩国的使用正在减少)。该块中的许多字符在所有三种书写系统中都使用,而其他字符仅在三种书写系统中的一种或两种中使用。越南的 N\xc3\xb4m 文字(现已废弃)也使用汉字。

\n