匹配操作符(绑定操作符): =~、!~
=~检验匹配是否成功:$result= $var =~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回false。
!~则相反。
模式中的特殊字符
字符 + :一个或多个相同的字符,如:/ab+/在字符串abbc中匹配的将是abb,而不是ab。
字符 *和? :它们与+类似,区别在于*匹配0或任意个相同字符,?匹配0个或1个该字符。如:/de*f/匹配df、def、deeeef等;/de?f/匹配df或def。
字符{}:指定所匹配字符的出现次数。如:/de{1,3}f/匹配def,deef和deeef;/de{3,}f/匹配不少于3个e在d和f之间;/de{0,3}f/匹配不多于3个e在d和f之间。
字符 []和[^]
[]意味着匹配一组字符中的一个,如/a[0123456789]c/将匹配a加数字加c的字符串。^表示除其之外的所有字符,如:/d[^deE]f/匹配d加非deE字符加f的字符串。
匹配任意字母或数字
/[0-9]/表示任意数字,[a-z]表示任意小写字母,[A-Z]表示任意大写字母。
任意大小写字母、数字的表示方法为:/[0-9a-zA-Z]/,-表示字符范围。
转义字符\
如果你想把模式中的特殊字符作为普通字符,须在其前加斜线“\”。如:/\*+/中\*即表示字符*,而不是上面提到的一个或多个字符的含义。反斜杠表示为/\//。
锚模式
^ 或 \A |
仅匹配串首 |
|||
$ 或 \Z |
仅匹配串尾 |
|||
\b |
匹配一个单词边界,也就是指单词和空格间的位置, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 |
|||
\B |
匹配非单词边界, 'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 |
|||
转义字符 |
描述 |
范围 |
||
\d |
任意数字 |
[0-9] |
||
\D |
除数字外的任意字符 |
[^0-9] |
||
\w |
任意单词字符 |
[_0-9a-zA-Z] |
||
\W |
任意非单词字符 |
[^_0-9a-zA-Z] |
||
\s |
空白 |
[ \r\t\n\f] |
||
\S |
非空白 |
[^ \r\t\n\f] |
||
匹配:m/<regexp>/;m可省略,匹配成功返回真,否则返回假
替换:s/<pattern>/<replacement>/;
翻译:tr/str1/str2/;
把str1中的第一个字符替换为str2中的第一个字符,把str1中的第二个字符替换为str2中的第二个字符,依此类推;
知识点回顾
匹配:m/<regexp>/;
替换:s/<pattern>/<replacement>/;
翻译:tr/str1/str2/;
匹配操作符=~、!~;
模式中的特殊字符。