上一篇我介绍了一些Perl中正则表达式的基础知识(元字符、简单的量词、字符类等),接下来我将继续介绍Perl中正则表达式的其它基础知识。
锚定
^:表示在字符串的开头进行匹配。
$:表示在字符串的结尾进行匹配,不考虑是否存在换行符。
词锚定
/b:词界锚定,针对单词使用。
/B:非词界锚定,将在任何非/b匹配的点上进行匹配。
绑定操作符
=~:对$_进行匹配只是默认的行为,使用=~相当于告诉Perl将右边的模式在左边的字符串上进行匹配,而非对$_。
模式内的内插
正则表达式模式用也可以使用Perl变量,如/^($what)/,该模式中的$what将被替换成已存在的$what变量的值。
自动匹配变量
$&:正则表达式模式匹配上的那部分字符串将自动存储在其中。
$`:正则表达式模式在匹配成功前所找到的字符串将自动存储在其中。
$':正则表达式模式还未匹配的剩余部分将自动存储在其中。
以下面的Perl代码为例,其中$& = " there,",$` = "Hello",$' = " neigbor"。
一般的数量词
{ , }:花括号中有两个数字,由逗号隔开,表示前一项允许重复的次数。如模式/a{5,15}/将匹配5个至15个a中的任意一种,包括5个或15个。如果省略掉第二个数字(保留逗号),如/a{5,}/则表示无上限,可以匹配5至无穷多个。如果逗号也被省略了,将匹配确定的次数,像这里的5次,即只匹配aaaaa。
星号(*):等同于{0,}。
加号(+):等同于{1,}。
问号(?):等同于{0,1}。
优先级
共只有4个级别,如下:
1、最顶端的是括号();
2、第二级是数量词,*、+、?、{,}等;
3、第三级是锚定和序列;
4、优先级最低的是选择符竖线(|)。