用m//进行匹配:
m//与//相同,/为匹配的边界符,但是m//的边界符可以用别的符号代替。
模式匹配修饰符:
在边界符后面加特定字母,表示某种规则,可以组合使用,没有顺序。
/i | 与大小写无关 |
/s | 符号“.”能匹配任何字符(包括换行符) |
/x | 在匹配中允许加入空白符(方便看) |
/a | 字符解释:采取ASCII方式 |
/u | 字符解释:采取Unicode方式 |
/l | 字符解释:本地化语言 |
锚位:
定义开头或结尾固定字符或单词。
\A | 匹配开头字符 |
\z | 匹配末尾字符,大写Z表示后面允许有换行符 |
\b | 匹配任何单词的首位,一组连续的\w字符开头或结尾 |
例:
/\A\s*\Z/ —— 匹配一个空行
另一种方式:^行首,$行末
绑定操作符:
=~ ——用右边的模式匹配左边的字符串
模式中的内插:
例:
my $what = "larry"; if(/\A($what)/) { ... }
捕获变量:
$数字
捕获变量形如:$1、$4,它和反向索引\1、\4差不多,不同的是反向索引是模式匹配期间得到的结果,捕获变量则是模式匹配后对得到的补货内容的索引
捕获变量只应该在捕获成功时使用,否则会得到上一次模式匹配的捕获内容。
不捕获圆括号:
(?:
) —— 表示括号内容不被捕获,不占用位置。
捕获标签:
形式:(?<标签名>内容)
捕获:$+{标签名}
反向引用:\g{标签名}
通用量词:
除了+、*、?以外,还可以规定出现次数。
{n} ——出现n次
{n,m}——出现n到m次
{n,} ——出现n次以上
正则表达式优先级(由高到低):
圆括号(分组或捕获) | (...)、(?:...)、(? |
量词 | a*、a+、a?、a{n,m} |
锚位和序列 | abc、^、$、\A、\b、\z、\Z |
择一竖线 | a|b|c |
原子 | a、[abc]、\d、\1、\g{z} |