1.
=~ 将正则式去匹配字符串,生成的结果是,如果正则式在字体串获得了匹配,值为真;否则,值为假。
2. 默认的分隔符//也可以用'm'加任意字符代替:
"Hello World" =~ m!World!; #matches, delimited by '!'
"Hello World" =~ m{World}; #matches, note the matching '{}'
"/usr/bin/perl" =~ m"/perl"; #matches after '/usr/bin', '/' becomes an ordinary char
3.正则表达式区分大小写,正则式对空格敏感
4.如果正则式在字符串的多个位置都匹配,Perl首先匹配的是字符串的第一个位置。
5.不是所有的字符都能用在正则式去匹配,如下的元字符就是:
{}[]()^$.|*+?\
要匹配这些元字符,需要在元字符前使用反斜杠"\"做转义
"2+2=4" =~ /2+2/; #doesn't match, + is a metacharacter
"2+2=4" =~ /2\+2/; #matches, \+ is treated like an ordinary +
6.匹配式中有变量时,变量的值会先扩展,再进行匹配
7.^:在字符串的开始处匹配; $:在字符串的结尾处匹配;
^和$还可以同时用,结果是正则式完全匹配整个字符串
8.字符类,表示可能字符的集合,而不是一个字符。字符类使用方括号[...]来表示
9.'i':对于不区分大小写的匹配,可以在正则式中添加修饰符'i'。
10.'-':字符类中的范围操作符; 如果'-'是字符类的第一个或最后一个字符,则它表示原义,不是范围操作符。
11.\d: 匹配数字,包括[0-9],以及非罗马数字;
\s: 匹配空格,包括[\ \t\r\n\f]等;
\w:匹配一个单词
\D:\d的反字符类,表示数字外的其他字符
\S:\s的反字符类,表示任何非空格的字符
\W:\w的反字符类,表示任何非单词的字符
'.': '.'表示匹配除"\n"(换行符)外的任何字符。但使用了//s时不起作用
\N:和'.'类似,匹配除换行符外的任何字符,和//s起不起作用无关。
12./\d\d:\d\d:\d\d/ 匹配hh:mm:ss时间格式
/[\d\s] 匹配任意数字或空格
/\w\W\w/; 匹配单词,非单词,单词模式
/..rt/; 匹配两个字母后跟着'rt'
/end\./; 匹配'end.'
/end[.]/; 匹配'end.'
13.(//): no modifiers
(//s): s modifier
将字符串视为单一的长行
'.' 包括"\n"的任意字符 ^ 一行字符串的开始 $ 一行字符串的结尾
(//m): m modifier
将字符串视为多行的集合
'.' 除"\n"外的任意字符 ^ 字符串内任意行的开始 $ 字符串内任意行的结尾
(//sm): both s and m modifiers
将字符串视为单一长行,但进行多检测
'.' 包含"\n"的任意字符 ^ 字符串内任意行的开始 $ 字符串内任意行的结尾
14.在使用//m时,还可以使用锚符号:
\A:匹配字符串的开始 \Z:匹配字符串的结尾,包括换行符 \z:仅匹配字符串的结尾
15.| :单词或字符串的选择元字符
16.() :分组元字符,可以将正则式的部分作为一个单元
17. 分组元字符()还有另一个功能:
将匹配的字符才能够字符串中提取出来。
18.$+ 指最高序号的变量
19.Perl除了提供匹配内容外,还通过数组@-和@+提供的匹配的位置信息:
$-[0] : 整个匹配结果在字符串中的起始位置
$-[n] : 第$n个匹配结果在字符串中的起始位置
$+[0] : 整个匹配结果在字符串中的结束位置
$+[n] : 第$n个匹配结果在字符串中的结束位置
20.?:匹配一次或零次;
* : 匹配零次或任意次
+ : 匹配以此或任意次;
{} : 匹配指定的次数
21.
a?? means: match 'a' 0 or 1 times. Try 0 first, then 1.
a*? means: match 'a' 0 or more times, i.e., any number of times, but as few times as possible
a+? means: match 'a' 1 or more times, i.e.,at least once, but as few times as possible.
a{n,m} means: match at least n times, not more than m times, as few times as possible.
a{n,}? means: match at lease n times, but as few times as possible
a{n}?means:match exactly n times.Becase we match exactly n times,a{n}? is equivalent to a{n} and is just there for notainal consistency.
22. g 和 pos()一起配合使用,能搜索整个文本
23. 搜索替换的语法: s/regexp/replacement/modifiers
24.\l:将下一字符转换成小写 \u:将下个字符转换成大写