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
PERL虽然看起来有点像C,和C等相比,PERL有一些特性,有的人要把特性说成怪谁也没办法例如if把,在C等语言里面,if后面的语句和else后面的语句,如果只有一句可以不用{},而Perl却必须要求,例如必须这样写:
if (a>1) {print 'OK'}
此外,PERL可以把if放在语句的后面,这个也很有特色,而且这就不需要{},分号在if的后面,例如:
print 'OK' if (a>1)
还有一个,PERL的单引号和双引号都表示字符串,但是单引号不做变量解释,C和JAVA的朋友又要大惊小怪了吧。
好看、难看是个人观点,但是绝对很高效、简洁。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)