Perl正则表达式常用语法总结

Perl正则表达式常用语法总结,第1张

*** 作符

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的朋友又要大惊小怪了吧。

好看、难看是个人观点,但是绝对很高效、简洁。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11515671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存