操作符
m/.../ 模式匹配操作符
s/.../.../ 模式替换操作符
qr/.../ 预编译正则表达式
=~ 绑定操作符
普通元字符
. 通配符,可匹配除\n外的一个任意字符
\ 用于字符转义
| 择一竖线
\Q...\E 转义\Q至\E之间的所有元字符
字符集
[...] 肯定型字符集
[^...] 否定型字符集
- 可用于表示一系列连续字符
[-...\\...\^] 字符集中表示真正的“-”、“\”与“^”
字符集简写
\d与\D 基本相当于[0-9]与[^0-9]
\w与\W 基本相当于[A-Za-z0-9_]与[^A-Za-z0-9_ ]\s与\S 空白字符集(包括空格、\n等)及其反义字符集
量词
* 可重复匹配0至任意多次
+ 可重复匹配1至任意多次
? 可重复匹配0或1次
{1,5} 通用量词,可重复匹配1至5次
{1,} 无重复匹配次数上限,此处相当于量词“+”
{5} 固定匹配5次
*?、+?、??、{...}? 忽略优先量词
*+、++、?+、{...}+ 占有优先量词
与小括号相关的语法
(...) 普通捕获组
(?: ...) 非捕获组
(?> ...) 固化分组
(? ...) 命名捕获组
(?i-m: ...) 启用i修饰符并关闭m修饰符的非捕获组
((?i-m) ...) 启用i修饰符并关闭m修饰符的捕获组
\1、\2、\3 普通绝对反向引用
\name 反向引用命名捕获组
\g{...}、\k<...> 支持相对反向引用的写法(二者略有差别)
$1、$2、$3 使用绝对编号的捕获变量
$+{name} 通过%+散列调用命名捕获组内容
$`、$&、$' 匹配前字段、匹配字段与匹配后字段(使用会大幅降低正则引擎的速度)
修饰符
/i 模式字符忽略大小写
/m 启用行首尾锚位
/x 启用宽松排列模式
/g 全局匹配、全局替换
/o 只编译一次
锚位
\A 绝对开头锚位
\Z 绝对末尾锚位
\z 忽略末尾换行符的末尾锚位
^、$ 未开启/m时,相当于\A与\z,开启\m后为行首尾锚位
\b 单词边界锚位
\B 非单词边界锚位
\G 锚位到上一次成功匹配的结束位置
(?= ...) 肯定顺序环视
(?! ...) 否定顺序环视
(?<= ...) 肯定逆序环视
(?
优先级
小括号 > 量词 > 锚位和序列 > 择一竖线 > 原子
樱雨楼
完于:2016.3.30