操作符
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