首页/开发/正则与编码速查/空白字符类的匹配范围
正则基础45 条

空白字符类的匹配范围

空白类匹配空格、制表符、换行、回车等空白字符,取反写法匹配其余字符;它包含换行这一点是最常见的坑。行内处理应显式写成空格与制表符集合,严格校验时也不要依赖简写类。

正则与编码速查开发更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌​​​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌‌​​​​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

空白类包含什么

空白类简写匹配空格、制表符、换行、回车、换页与垂直制表符等空白字符;取反的空白类匹配其余字符。它在 Unicode 语义下还会扩展到更多不可见字符,例如不换行空格与部分全角空格。

换行是最大变量

很多坑都出在「空白类包含换行」这一点上:用空白类加号切分字段,跨行文本会被合并;用取反空白类做整行内容提取,遇到行尾空行会提前结束。想只处理行内空白,必须显式写成空格与制表符的集合。

基本信息

包含字符空格、制表符、换行符、回车符、换页符、垂直制表符
Unicode 扩展文本模式下还会匹配不换行空格等不可见字符,具体范围以引擎文档为准
取反写法大写 S 表示非空白字符的任意一个
行内替代写法显式写空格与制表符的集合,可避免吞掉换行
命令行等价字符类空白写法与简便写法在不同工具里略有差异
性能提示空白类加号配合非贪婪常用于跳过间隔,但连续空白过长时回退次数会上升

典型使用场景

  • 切分以空白分隔的字段,例如命令输出与日志列
  • 清洗用户输入的首尾空白与中间多余间隔
  • 校验字段内不含空白,配合锚点做整体判断
  • 匹配缩进,区分制表符与空格两种缩进风格
  • 跨行处理时先明确是否需要把换行也当作空白

空白类的写法与差别

空白类的写法与差别
grep -E '^[[:space:]]+' f.txt     # 行首必须有空白字符
grep -E '^[ \t]+' f.txt           # 只把空格与制表符当缩进,不含换行
sed 's/[ \t]*$//' f.txt           # 去掉行尾空白,不会跨行
tr -s ' ' < f.txt | head          # 压缩连续空格,需要外部工具配合
awk 'NF{print $1}' f.txt          # 按空白切列,天然逐行处理
cut -d' ' -f1 f.txt | head        # 只用单个空格做分隔符,与空白类不同

空白相关写法对照

写法含义是否含换行
空白类简写所有空白字符含
取反空白类所有非空白字符不含换行以外的空白
空格与制表符集合只匹配这两种不含
空格字面量只匹配空格不含
空白类加号连续空白整体含,会跨行合并
处理制表符分隔的数据时,先确认分隔符到底是制表符还是多个空格。空白类会同时吃掉两者,用它切出来的列在使用制表符对齐的数据上可能与肉眼所见不一致。
在 Unicode 语义下,某些看起来不是空白的不可见字符也会被算作空白,例如不换行空格。做严格校验时建议显式写明允许的空白字符集合,而不是依赖简写类。

易错点

  • 用空白类加号切分跨行文本,多行内容被合并成一段,字段错位
  • 以为取反空白类不会匹配换行,实际换行也属于空白,提取结果被静默截断
  • 把不换行空格当成普通空格处理,校验通过但显示与比较结果不一致
  • 依赖简写类做严格字段校验,Unicode 语义差异让校验范围比预期更宽

数据来源与参考

  • PCRE2 官方文档 pcre2pattern(3):空白类与 Unicode 属性
  • Python 官方文档 re 模块:空白类与 ASCII 标志
  • IEEE POSIX.1-2017 Base Definitions 第 9 章:字符类名

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/regex/regex-whitespace-classes.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌‌‌​‌‌‌​​‌​​‌‌​​‌​‌​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌‌​​​​​‌​‌‌​‌​‌‌‌​‌‌‌​‌‌​‌​​​​‌‌​‌​​‌​‌‌‌​‌​​​‌‌​​‌​‌​‌‌‌​​‌‌​‌‌‌​​​​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​​‌​‌​​‌​‌‌​‌​‌‌​​​‌‌​‌‌​‌‌​​​‌‌​​​​‌​‌‌‌​​‌‌​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​