首页/开发/正则与编码速查/常用元字符总览与含义对照
正则基础45 条

常用元字符总览与含义对照

常用元字符分四类:锚点定位、字符类描述单字符、量词控制重复、分组与分支组织结构,另有反斜杠负责转义。同一符号在方括号内外可能含义不同,扩展构造的支持范围随引擎而异。

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

元字符分四类

常用元字符按职责分成四类:定位位置的锚点、描述单个字符的字符类、描述重复次数的量词、把模式组织起来的分组与分支。再加一个转义符号,就构成了绝大多数模式的全部符号。

类内类外两套规则

同一符号在方括号内外可能有两种含义,判断依据是它处于哪个位置以及是否处于首位。查表时先看这一列,比死记每个符号更有效。

基本信息

定位类脱字符与美元符号表示位置,零宽不消耗字符
字符类点号匹配任意字符,方括号定义集合,反斜杠字母组合定义预定义集合
量词类星号、加号、问号、花括号控制重复次数
组织类圆括号分组,方括号定义集合,竖线分支
转义类反斜杠把元字符降级为普通字符,或把字母升级为特殊序列
扩展类型断言、命名分组、属性类等属引擎扩展,支持范围以官方文档为准

典型使用场景

  • 读一条陌生模式时按四类拆解,快速判断每部分在做什么
  • 写模式时先定结构(分组与分支),再补字符与次数约束
  • 排查语法错误:检查是否漏转义了当作字面量的元字符
  • 评审模式时逐类核对是否存在过宽的字符类或过松的量词
  • 把紧凑模式改写成带注释版本,按类别分段说明

一条模式的分类拆解

一条模式的分类拆解
\A(?P<y>\d{4})-(?P<m>\d{1,2})\Z
# \A        锚点:整串开始
# (?P<y>..)  分组:命名捕获,便于按名字取值
# \d{4}      字符类 + 量词:恰好四位数字
# -          字面量:分隔符,无需转义
# \d{1,2}    字符类 + 花括号量词:一到两位数字
# \Z        锚点:整串结束

[a-z.]+   # 类内:范围与点号都是集合成员
\w+       # 类外:字母数字下划线,下划线也算

元字符总览

符号类别含义类内是否仍特殊
点号字符类任意字符(视跨行开关)退化为普通字符
脱字符定位行或串开头首位时取反
美元符号定位行或串结尾普通字符
星号与加号量词零次或多次、一次或多次普通字符
问号量词零次或一次,或非贪婪修饰普通字符
花括号量词次数区间普通字符
方括号组织定义字符集合需要处理嵌套
圆括号组织分组与捕获普通字符
竖线组织分支选择普通字符
反斜杠转义降级或升级含义仍为转义符
点号是否跨行、简写类是否按 Unicode 解释、断言是否被支持,都属于引擎与开关层面的差异。查总览表只能确认符号类别,具体语义要结合目标引擎的文档。
需要匹配的字符串本身含大量元字符(例如配置文件片段或代码行)时,优先使用字面查找或固定字符串模式,比逐个转义更可靠也更容易维护。

易错点

  • 把总览表当成跨引擎通用语义,忽略引擎差异导致模式移植后行为改变
  • 忽略类内类外规则不同,在方括号内多做或漏做转义
  • 把扩展构造当成标准语法使用,在只支持基础语法的工具里直接报错
  • 逐字符转义整段文本而不是改用字面查找,模式冗长且易漏

数据来源与参考

  • IEEE POSIX.1-2017 Base Definitions 第 9 章:正则表达式语法
  • PCRE2 官方文档 pcre2pattern(3):元字符与语法总览
  • MDN JavaScript 参考:正则表达式语法速查

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

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