正则表达式匹配中文的范围是什么?
|
freeflydom
2026年5月6日 15:8
本文热度 108
|
:正则表达式匹配中文的范围是什么?
在正则表达式中匹配中文字符(汉字),最常用的方法是利用 Unicode 范围或属性。
1. 基本范围:[\u4e00-\u9fa5]
匹配常用的 CJK 统一表意文字(即最常见的简体/繁体汉字)。
示例(Python):
import re
pattern = re.compile(r'[\u4e00-\u9fa5]+')
text = "Hello 世界123,你好!"
print(pattern.findall(text))
2. 更完整的 CJK 范围
如果要包括扩展区(如生僻字、日韩越汉字),可以扩大范围:
基本区:\u4e00-\u9fff
扩展A区:\u3400-\u4dbf
扩展B~F区(范围较大,一般不全部列出)
通常简化的“全汉字”范围可用:
[\u4e00-\u9fff\u3400-\u4dbf]
3. Unicode 属性匹配(推荐,需支持)
现代正则引擎(如 Python 的 regex 库、PCRE、Java、.NET、JavaScript ES2018+)支持 \p{Han} 或 \p{Script=Han}。
Python(需要安装 regex 库,re 不支持):
import regex
pattern = regex.compile(r'\p{Han}+')JavaScript(ES2018+):
const pattern = /\p{Script=Han}+/u;
"Hello 世界123".match(pattern); 4. 常见注意事项
不要忘记匹配中文标点(如 ,。!?;:“”‘’)时,它们不在 \u4e00-\u9fa5 范围内,需单独加:[\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef] 等。
在 Python 的 re 中,Unicode 属性不支持,只能使用范围。
在 Java 中:"\\p{IsHan}"。
在 .NET 中:\p{IsCJKUnifiedIdeographs}。
5. 简单匹配中文(含标点)
[\u4e00-\u9fa5\u3000-\u303f\uff00-\uffef]
根据你的实际需求选择最合适的方法即可。
该文章在 2026/5/6 15:08:21 编辑过