正则表达式_打印版
/g 下 生 效 ; $_=‘abc’;/a/g; 此 时 /\Gb/ 成 功,/\Gc/失败
单词分割符:\b、\B
‘1 23’ =~ m/\b2\B/; 匹配成功
环视:(?=…)、(?!...)、(?<=…)、(?<!...) “a2b3c“ =~ m/[0-9](?=c)/;匹配 3,而不匹配 2
动态表达式:(??{…})
“2a3b1c”
=~
/(\d)(??{if($&
>
1){“a”}else{“c”}})/g 匹配 2 和 1
专属于正则文字的功能
变量插值:$name、@name
@name=(‘a’,’b’); 则 m/@name/; 匹 配 “@name”
大小写转换(对单字符):\l、\u
Unicode 属性 \p{PROP}、\P{PROP} \p{IsASCII} 等效 [\x00-\x7f]
锚点及其它零长度断言(不被捕获)
行/字符串起始位置:^、\A
\A 严格匹配字符串起始位置;^与/m 可多 行匹配
行/字符串结束位置:$、\z、\Z $与\z 区别同上;$与\Z 等同
前一次匹配的结束位置:\G
元字符
\...、…|…、(…)、[…]、^、.、$、{} 特殊字符
[a-z]匹配小写字母、^ab 匹配’ab’开头的字 符串
\0、\a、\e、\f、\n、\r、\t、[\b] \0 匹配空字符、[\b]匹配退格符
各进制及控制字符
\NNN、\xhex、\x{hex}、\cchar
\23 匹配 023、\cA 匹配 ctrl+a
固化分组:(?>…)
‘ab’ =~ m/(?>.*)b/;匹配失败,’ab’被吞后未 释放‘b’
多选结构:|
(a|b)匹配’a’或’b’;(?:a|b)也匹配’a’或’ b’,且不捕获
条件判断:(?if then | else)
‘a1b8a9b2‘=~m/(?(?<=a)([0-5])|([6-9]))/g 匹 配’1’和’8’
m/a\ubcd/;匹配 ‘aBc’
大小写转换范围:\U、\L…\E
m/a\Ubc\Ed/; 匹配 ‘aBCd’
文字文本范围:\Q…\E (与函数 quotemeta 等价)
$insert = ‘$’; m/a\Q$insert\Eb/; 匹配 ‘a$b’
命名的 Unicode 字符:\N{name}
1. 必须先 use charnames ‘:full’;
2. 具体支持的 Unicode 字符列表可
查看文
件
lib/unicore/UnicodeData.txt
\N{GREEK SMALL LETTER ALPHA}匹配α,即 \x03b1
修饰词 /s /m
含义 令 . 匹配换行符,并且忽略不建议使用的 $* 变量 令 ^ 和 $ 匹配下一个嵌入的 \n
字符组及相关结构
[…]、[^…]、POSIX 风格的[:CLASS:] [^ab]匹配非 a 且非 b、[[:lower:]]匹配小写字 符
经典字符类\d、\D、\s、\S、\w、 \d 在 单 字 节 时 等 效 [0-9] 、 utf8 时 等 效
\W
\p{IsDigit}
\C
匹配单个字节(有危险)
贪婪量词:*、+、?、{n}、{n,}、{x,y} ‘abcdc’=~m/a.*c/; 匹配 ‘abcdc’
非贪婪量词:*?、{x,y}?等
‘abcdc’=~m/a.*?c/; 匹配 ‘abc’
内嵌代码:(?{…})
‘a2c3d’=~m/([0-9])(?{print $’,”-”})/g; 打 印 c3d-d-
注释和模式修饰符
模式修饰符:(?xsmi-xsmi) 模式修饰作用范围:(?xsmi:) 注释:(?#...)
m/foo((?x-i) bar )/i; 为 bar 打开/x,关闭/i
m/a (?i:b) c/; 匹配’a b c’和’a B c’
m/Байду номын сангаасge=(?# 紧 跟 一 个 数 字 )\d+/; 匹 配 age=18 等
分组、捕获、条件判断和控制
捕获型括号:(…)、\1、$1、$+、 s/(\d)a/\1/g; 将 1a2a 换成 12
$^N、$`、$&、$’、@-、@+
$`、$&、$’分别为匹配前、中、后的文本
非捕获型括号(用于分组):(?:…) ‘ab’ =~ m/(?:a)(b)/; 则$1 为’b’而非’a’