perl基础知识07【正则表达式】
本页涉及到2块内容 1.模式匹配 ?? 1.1修饰符 ?? 1.2__DATA__文件句柄 ?? 1.3m匹配符,s替换运算符,=~匹配运算符 ?? 1.4保存模式的特殊变量 2.元字符
?? 2.1.点号"."与换行符与s修饰符关系 ?? 2.2.理解【】的意思 ?? 2.3.贪婪与非贪婪 ?? 2.4.锚定字符 ?? 2.5.匹配交替性 ?? 2.6.分组分簇 ?? 2.7.记忆与捕获($1,$2..) ?? 2.8.正向前负向前的匹配替换 ?? 2.9.tr函数 ?? 2.10.单双引号的使用场景 ------------------------------------------------------------------------------------------------------------------------------------------------------- -->正则表达式功能很强大,也比较要区级时间去小结,用好它,它可以帮你做很多事情,让你:)哈哈; 答1.1修饰符 -->请列出你所知道的修饰符? :)if???? :)while???? :)? foreach??? :)? unless??? :) until #if [oracle@localhost ~]$ perl -ne' #while [oracle@localhost ~]$ perl -e' #foreach [oracle@localhost ~]$ perl -e' #unless [oracle@localhost ~]$ perl -e' #until [oracle@localhost ~]$ perl -e' 答1.2(文件句柄) -->这个比较简单就是嵌在脚本中的文本段 [oracle@localhost ~]$ ./perl07 PS:不知道为啥在perl -e' '中扩行没有结果输出? 答1.3 #m匹配,这个在搜索内容带有/方便,m后面的要求配对符号只要不为字母即可,如' '," ",{ } [oracle@localhost ~]$ cat data [oracle@localhost ~]$ perl -ne' 当然它还有几个选项要记住的,igx选项用得会多些; -x的选项用得少些 [oracle@localhost ~]$ perl -ne' #s替换运算符,有几个选项,用得比较多的是eigx,除e外其它与上面的几个选项类似; #-e参数是比较少用的,从下面对比中可以看到它的用法; [oracle@localhost ~]$ perl -ne' #绑定模式运算符 这个运算符一个是在默认的处理变量不为$_时,平时我们的写法是类似 print if /.../; 而当不为默认的$_时,我们就要指明绑定匹配符; [oracle@localhost ~]$ cat perl07 #从上面可以看到$_--->$inputline; 答1.4-保存模式的特殊变量 这里涉及到3个变量$&,$`,$';后2个一个是反引,一个是单引; $&:表示是上一个匹配模式中查找的内容; $`:上一次查找匹配模式内容的前面的内容; $':上一次查找匹配模式内容的后面的内容; [oracle@localhost ~]$ ./perl07 ? 答2.元字符 包含内容: 2.1.点号"."与换行符与s修饰符关系 2.2.理解【】的意思 2.3.贪婪与非贪婪 2.4.锚定字符 2.5.匹配交替性 2.6.分组分簇 2.7.记忆与捕获($1,$2..) 2.8.正向前负向前的匹配替换 2.9.tr函数 2.10.单双引号的使用场景 ------------------------------------------------------------------------------- 答2.12.1.点号"."与换行符与s修饰符关系 可以看到加了s修饰符会把n当作是一个点号"."能匹配到的字符; 如果没有加“s”修饰符那么n将会执行换行; [oracle@localhost ~]$ perl -e' ------------------------------------------------------------------------------- 答2.2.理解【】的意思 看个例子:if /[A-Za-z0-9_]/; #知道这个代表是什么? zhang? 2342 zhang 2342 zhang ___ _ _ _ _ 结果是上面的行都符合,它代表是含有“大写字母or小写字母or数字or下划线"_" ------------------------------------------------------------------------------- 答2.3.贪婪与非贪婪,可以看到非贪婪就是按最小的匹配原则,贪婪就是按最大的匹配原则; #贪婪与非贪婪的区别例子 答:2.4.锚定字符 这里我们只关注难理解,常见开头结尾(^,$)就忽略不讲; 从测试结果来看^,$,A,Z,z几个关于首尾的使用上没什么不同,待日后再确定? #看下G意思 下面这段摘抄于官档 Here's how to use
The last example should print: #至于pos是一个变量,可以查阅官档; http://perldoc.perl.org/functions/pos.html #b和B [oracle@localhost ~]$ perl -ne' #b边界包括旁边为空格或者在行首或行尾的情况,行首和行尾有一侧是没有空格的; #B与b是相反,这里不举例说明; 答2.5.匹配交替性 #这个比较简单 [oracle@localhost ~]$ cat data #相当于是grep -E这个参数的作用; 答2.6.分组分簇 # 这个也比较简单,无非是将要匹配的字符放在一起用|隔开用括号括起的小模式结构; [oracle@localhost ~]$ cat data 答2.7.记忆与捕获($1,$2..) #这个比较常用,而且也比较有用; #先看个例子在行的前后增加“|”; [oracle@localhost ~]$ cat data 再看另一例子 [oracle@localhost ~]$ cat data [oracle@localhost ~]$ perl -ne' 答2.8.正向前负向前的匹配替换 这个也是简单的,只要记住下符号即行; 概括:没有!意思就是指不匹配的结构称作“负”,有就是指匹配结构称作“正”; 向前与向后是针对所查找的小括号的内的字符的位置而言,放前面的匹配查找就是“正向前查找”; [oracle@localhost ~]$ perl -ne' [oracle@localhost ~]$ cat data [oracle@localhost ~]$ perl -ne' [oracle@localhost ~]$ cat data 答:2.9.tr函数 这个用得少一些,将三个选项举例: #/d/选项前面搜索的字符是或的关系而不是完全匹配,看下面的变化就清楚了; [oracle@localhost ~]$ perl -ne' #/c选项意思 [oracle@localhost ~]$ perl -ne' #跟上面的匹配关系是相反的; 也就是对于上面这个例子对于不包含z或h或a或n或g的字符用*替换包含替代掉"n"; #/s选项意思 [oracle@localhost ~]$ perl -ne' #将重复的字符压缩为相同的一个;如上例前多个空格压缩为一个空格; 答? 2.10.单双引号的使用场景 [oracle@localhost ~]$ cat tmpperl #!/usr/bin/perl $a='this is a var test'; print "$a"."222221n"; $b="this is a var test"; print "$b"."222222n"; print '$b'."333333n"; print '$a'."444444n"; [oracle@localhost ~]$ ./tmpperl ? this is a var test222221????? #可以看到对于变量用单引和双引都可正常输出; this is a var test222222 $b333333??????????????????????? #可以看到在print函数中变量必须用双引包含; $a444444 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |