0,正则表达式是一组字符串的抽象.
1,匹配操作符 =~、!~:
=~检验匹配是否成功,!~则相反
=~检验匹配是否成功,!~则相反
2,正则表达式有几种使用方法:
第一种:最常用的一种,就是确定一个字符串中是否匹配某个模式,/foo/
第二种:如果你能将一个模式在字符串中定位,你就可以用别的东西来替换它
s/foo/bar/,表示将 foo 替换成 bar
第一种:最常用的一种,就是确定一个字符串中是否匹配某个模式,/foo/
第二种:如果你能将一个模式在字符串中定位,你就可以用别的东西来替换它
s/foo/bar/,表示将 foo 替换成 bar
【 a {} represents any pair of delimiters you choose, if"/" is the delimiter then the initial m is optional
// m{} Pattern match
qr{} Pattern
s{}{} Substitution
tr{}{} Transliteration 】
// m{} Pattern match
qr{} Pattern
s{}{} Substitution
tr{}{} Transliteration 】
3,if($line =~ /http:/)
=~ 符号(模式绑定操作符)告诉 Perl 在 $line 中寻找匹配正则表达式“http:”, 如果你不是用=~ 操作符,Perl 会对缺省
字符串进行操作。缺省的字符串就是 $_ 这个特殊标量。实际上,$_ 并 不是仅仅是模式匹配的缺省字符串。其
它的一些操作符缺省也使用 $_ 变量。
因此可以简化成:if(/http:/)
4,+意味着一个或多个相同的字符
[]意味着匹配一组字符中的一个,[^]这里的^表示后边的字符表的反集。
它的一些操作符缺省也使用 $_ 变量。
因此可以简化成:if(/http:/)
4,+意味着一个或多个相同的字符
[]意味着匹配一组字符中的一个,[^]这里的^表示后边的字符表的反集。
5,锚模式:
^ 或 \A : 仅匹配串首
$ 或 \Z : 仅匹配串尾
\b : 匹配单词边界
\B : 单词内部匹配
^ 或 \A : 仅匹配串首
$ 或 \Z : 仅匹配串尾
\b : 匹配单词边界
\B : 单词内部匹配
6,量词{}:
如果在括弧中只有一个数字,这个数字就指定了最少和最多匹配次数。
有最少次数和逗号,但省略了最大次数,那么最大次数将被当作无限次数
\d{7,11} 将匹配最少 7 位数字,但不会多于 11 位数字。
如果在括弧中只有一个数字,这个数字就指定了最少和最多匹配次数。
有最少次数和逗号,但省略了最大次数,那么最大次数将被当作无限次数
\d{7,11} 将匹配最少 7 位数字,但不会多于 11 位数字。
+,代表 {1,},意思为“最少一次”
*,表示 {0,},
? 表示 {0,1},表示“零或一次”
*,表示 {0,},
? 表示 {0,1},表示“零或一次”
注意:
缺省时量词作用在它前面的单个字符上,因此 /bam{2}/ 将匹配 “bamm”而不是“bambam”。
如果你要对多于一个字符使用量词,你需要使用圆括弧。
因此为了匹配“bambam”需要使用 /(bam){2}/。
缺省时量词作用在它前面的单个字符上,因此 /bam{2}/ 将匹配 “bamm”而不是“bambam”。
如果你要对多于一个字符使用量词,你需要使用圆括弧。
因此为了匹配“bambam”需要使用 /(bam){2}/。
7,字符范围转义:
转义字符 描述 范围
\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]
8,匹配任意字符:
字符"."匹配除换行外的所有字符,通常与*合用。
9,小结:
特殊字符 描述
() 模式内存
+ * ? {} 出现次数
^ $ \b \B 锚
| 选项,可以连接多个模式
10,模式匹配选项:
选项 描述
g 匹配所有可能的模式 全局修饰符
i 忽略大小写
m 将串视为多行
o 只赋值一次
s 将串视为单行
x 忽略模式中的空白
11,转换操作符,并不使用正则表达式
字符"."匹配除换行外的所有字符,通常与*合用。
9,小结:
特殊字符 描述
() 模式内存
+ * ? {} 出现次数
^ $ \b \B 锚
| 选项,可以连接多个模式
10,模式匹配选项:
选项 描述
g 匹配所有可能的模式 全局修饰符
i 忽略大小写
m 将串视为多行
o 只赋值一次
s 将串视为单行
x 忽略模式中的空白
11,转换操作符,并不使用正则表达式
tr/searchlist/replacementlist/
(1)按照默认设置,转换操作符用于对变量$_进行搜索和修改
(2)tr/A-Z/a-z/; change all uppercase to lowercase
(3)如果replacementlist是空的,或者与searchlist相同,那么tr///将计算并返回匹配的字符。目标字符串并不被修改
(2)tr/A-Z/a-z/; change all uppercase to lowercase
(3)如果replacementlist是空的,或者与searchlist相同,那么tr///将计算并返回匹配的字符。目标字符串并不被修改