《Perl以及正则在Perl中的应用.pptx》由会员分享,可在线阅读,更多相关《Perl以及正则在Perl中的应用.pptx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Perl技巧分享Perl以及正则在Perl中的应用By 小亮寒暄此处省略大约一千八百余字这里可以鼓掌了谢谢如何在windows下使用cpan一分钟学会perl$,%for/foreach,whileopenprintmy words=(a,b,c);foreach(words)print;Perldoc f forSearch.cpan.org常用简写while()print if/Norma/;$x=1;print$x+,n until$x=5;alpha=(a.z,n);print foreach alpha;注释的方法1.标准方法:#2.=for comment Commented te
2、xt =cut3.C+;/*This is a comment.C+style!*/Perl日常用途读取文件,进行文本处理Open DH,”xxx.txt”抓取页面,然后进行文本处理-lwp配合其他程序,对结果进行文本处理Netstat an|findstr“:80”|perl e“while()$i+print$i”示例正则什么是正则Hello202.138.32.34正则的三种模式匹配:m/(还可以简写为/,略去 m)替换:s/转化:tr/修饰词含义/i 忽略字母大小写/m 令 和$匹配随后嵌入的 n。/s 令.匹配换行符并且忽略废弃了的$*。/x 或略(大多数)空白并且允许在模式里的注释
3、/o 只编译模式一次/g 全局地查找所有匹配s模式和m模式的区别:s:/e 把右边当作一个表达式计算m:/cg 在/g 匹配失败后允许继续查找正则-选择自己的分隔符s(egg);slarvapupa;spupa/imago/;s!aaa!bbb!;saaabbb;正则量词量词原子性 含义*否 匹配 0 或者更多次数(最大)。+否 匹配 或者更多次数(最大)。?否 匹配 1 或者0 次(最大)。COUNT 否 匹配COUNT 次MIN,否 匹配至少MIN 次(最大)。MIN,MAX 否 匹配至少MIN 次但不超过MAX 次(最大)*?否 匹配0 或者更多次(最小)+?否 匹配1 或者更多次(最小
4、)MIN,?否 匹配最多MIN 次(最小)MIN,MAX?否 匹配至少MIN 次但不超过MAX 次(最小)扩展的正则序列(?#.)否 注释,抛弃(?:.)是 只集群,不捕获的圆括弧(?imsx-imsx)否 打开/关闭模式修饰词(?imsx-imsx:.)是 集群圆括弧加修饰词(?=.)否 如果前向查找断言成功,返回真(?!.)否 如果前向查找断言失败,返回真(?.)是 匹配未反向跟踪的子模式(?.)否 执行嵌入的Perl 代码(?.)是 匹配来自嵌入Perl 代码。正则的例子*(?:)*前半部分用来匹配后半部分用来匹配单独的&w+;匹配类似&nbps;匹配注释匹配注释中的/考虑分号,或者一行
5、的开始(?!http:)/匹配http:/正则的例子-2Perl 逐字匹配perl-e$x=vvvvvvv;while($x=/v(?=vv)/g)print 1Perl 匹配 非!叹号perl-eprintaaahttp:/aaaa=m(?Perl 匹配多行my($want_str)=$k=mscript(.*?)sm;正则的例子-3$x=1;print$x+,n until$x=5;alpha=(a.z,n);print foreach alpha;正则的例子-4问题:你想找到第N个fish.比如,想找到第三个“fish”字串:字串:One fish two fish red fish b
6、lue fish解决方法第一种,使用/g模式,配合while计数:$WANT=3;$count=0;while(/(w+)s+fishb/gi)if(+$count=$WANT)print The third fish is a$1 one.n;#Warning:dont last out of this loop The third fish is a red one.或者选择下面这种奇妙的方式:/(?:w+s+fishs+)2(w+)s+fish/i;正则的例子-5#简单的使用while$count=0;while($string=/PAT/g)$count+;#or whatever y
7、oud like to do here#高端的用法$count=0;$count+while$string=/PAT/g;#或者forfor($count=0;$string=/PAT/g;$count+)正则的例子-6匹配大于15的数字my$string=11,13,17,22,101,33,001,003,0010,001000,15.5,171.77;while($string=/0*(1-9d2,|16-9|2-9d).?d*/g)print$&.n;例6-2my$string=11,13,17,22,101,33,001,003,0010,001000,15.5,171.77;my result=split(/,/,$string);map print$_.,”if$_16 (sort$a$b result);阅读源码别人的代码,知道或不知道功能。理解每段的含义。谢谢