Perl 语言.

Slides:



Advertisements
Similar presentations
死亡是人生必經的歷程 也是每個人最終都要面對的人生大事. 大多數人很避諱談論死亡,深怕說 出「死亡」會帶來惡運,還有和死 亡相關的禁忌如:醫院和飯店電梯 按鈕都沒有四樓,紅包避諱包和 相關數字,這些都是每個人心 中的禁忌。
Advertisements

贵州职业 技术学院 商贸系 徐晓莉. 2 说课内容 课程分析 课程教学设计 课程特色 课程资源 课程评价.
四川财经职业学院会计一系会计综合实训 目录 情境 1.1 企业认知 情境 1.3 日常经济业务核算 情境 1.4 产品成本核算 情境 1.5 编制报表前准备工作 情境 1.6 期末会计报表的编制 情境 1.2 建账.
主编:邓萌 【点按任意键进入】 【第六单元】 教育口语. 幼儿教师教育口 语概论 模块一 幼儿教师教育口语 分类训练 模块二 适应不同对象的教 育口语 模块三 《幼儿教师口语》编写组.
第一組 加減法 思澄、博軒、暐翔、寒菱. 大綱 1. 加減法本質 2. 迷思概念 3. 一 ~ 七冊分析 4. 教材特色.
海南医学院附 院妇产科教室 华少平 妊娠合并心脏病  概述  妊娠、分娩对心脏病的影响  心脏病对妊娠、分娩的影响  妊娠合病心脏病的种类  妊娠合并心脏病对胎儿的影响  诊断  防治.
植树节的由来 植树节的意义 各国的植树节 纪念中山先生 植树节的由来 历史发展到今天, “ 植树造林,绿化祖国 ” 的热潮漫卷 了中华大地。从沿海到内地,从城市到乡村,涌现了多少 造林模范,留下了多少感人的故事。婴儿出世,父母栽一 棵小白怕,盼望孩子和小树一样浴光吮露,茁壮成长;男 女成婚,新人双双植一株嫩柳,象征家庭美满,幸福久长;
客户协议书 填写样本和说明 河南省郑州市金水路 299 号浦发国际金融中 心 13 层 吉林钰鸿国创贵金属经营有 限公司.
浙江省县级公立医院改革与剖析 马 进 上海交通大学公共卫生学院
第二章 环境.
教师招聘考试 政策解读 讲师:卢建鹏
了解语文课程的基本理念,把握语文素养的构成要素。 把握语文教育的特点,特别是开放而有活力的语文课程的特点。
北台小学 构建和谐师生关系 做幸福教师 2012—2013上职工大会.
教学设计要素分析 太原师范学院 丁相平
福榮街官立小學 我家孩子上小一.
第2期技職教育再造方案(草案) 教育部 101年12月12日 1 1.
特刊——三月 ISSN > 杏子河电子刊物出版社 欢迎订阅
企业员工心态管理培训 企业员工心态管理培训讲师:谭小琥.
历史人物的研究 ----曾国藩 组员: 乔立蓉 杜曜芳 杨慧 组长:马学思 杜志丹 史敦慧 王晶.
教育部高职高专英语类专业教学指导委员会 刘黛琳 山东 • 二○一一年八月
淡雅诗韵 七(12)班 第二组 蔡聿桐.
第七届全国英语专业院长/系主任高级论坛 汇报材料
小數怕長計, 高糖飲品要節制 瑪麗醫院營養師 張桂嫦.
制冷和空调设备运用与维修专业 全日制2+1中等职业技术专业.
会计信息分析与运用 —浙江古越龙山酒股份有限公司财务分析 组员:2006级工商企业管理专业 金国芳 叶乐慧 魏观红 徐挺挺 虞琴琴.
第六章 人体生命活动的调节 人体对外界环境的感知.
芹菜 英语051班 9号 黄秋迎 概论:芹菜是常用蔬菜之一,既可热炒,又能凉拌,深受人们喜爱。近年来诸多研究表明,这是一种具有很好药用价值的植物。 别名:旱芹、样芹菜、药芹、香芹、蒲芹 。 芹菜属于花,芽及茎类。
2012年 学生党支部书记工作交流 大连理工大学 建工学部 孟秀英
北京市职业技能鉴定管理中心试题管理科.
2013年上半年 各地养老服务政策 主讲人:老年人福利处 张晓峰.
2014吉林市卫生局事业单位招聘153名工作人员公告解读
各類所得扣繳法令 與申報實務 財政部北區國稅局桃園分局 103年9月25日
初級游泳教學.
日月光·伯爵居项目介绍.
香港故事之 三年零八個月的艱苦歲月 組員: 梁珮瑩 吳遠莉 李琪 李青儀 方松皓.
唐山美食 ——特色小吃.
紓壓腹部撇步 彭易璟 老師 第10組 4A055935林資淳 4A155002詹柏廷 497C0095林千慈 498J3041 郭人慈.
我的故事 ————往事回首.
郭子光教授从肺肾虚损辨治早中期慢性肾功能不全的经验
女生成功靠什么? 09英本四班 傅柏双.
国际投资环境罗氏评级法 美国.
社会保障学 第5章 失业保险.
Tool Command Language --11级ACM班 金天行.
~永靖國小友善校園週宣導~ 友善校園週宣導 胡慧嘉 校長.
主 题 班 会 团 结   协 作    力 量.
理想.
國立臺灣海洋大學 經費核銷應注意事項 會計室報告 99年4月29日.
唐雪峰 四川省疾病预防控制中心 四川省促进基本公共卫生服务均等化指导中心 2015年1月30日
技能竞赛促进专业建设 常州刘国钧高等职业技术学校 信息工程系 李文刚
恐龙小知识 三(1)班 张千一.
固定与搬运技术 义乌市中心医院 陈红卫.
我国的宗教政策 第七课第三框.
浅谈---- 敦煌莫高窟 的保护
簡介內容 校長的話 創校簡史 校訓 辦學理念 辦學特色 未來展望 優質校園 全新設備 優秀師資 優質學習環境 辦學績效 體育績優
中鸣虚拟搜救比赛项目 (一人) 现场主题创作(40%)(一人) 3D虚拟搜救(60%)(一人).
案例分析 胎记美容记 第6小组
2015年 宝鸡校本研修与高效课堂第二次联合学情会 中国教师研修网宝鸡项目组
第四章 员工招聘与甄选.
人生五色臉 年輕十歲必學的小動作,九個保持身體健康的的小訣竅 人們常在不經意間做些小動作,並認為這是身體的本能反應,
创办紫金矿业学院 为培养中国一流的矿业人才助力 ——合作创办紫金矿业学院的思路与实践
药店会员制营销.
“Unit 1 Encyclopaedias” Writing
八年级上册 第十一章 三角形 多边形 湖北省咸宁市咸安区教研室 李 群.
Perl 语言 1.
VB与Access数据库的连接.
正则表达式 一、基本定义及组成 组成:一个完整的表达式由字符簇,限定符,定位符等组成。
My life.
▲重合的概念 ▲對應頂點、對應邊、對應角 ▲全等的記法 ▲全等性質 ▲三角形全等性質
基础信贷法律知识 讲解人:岳杨.
教师教育科研的若干策略 21 May 2014.
Presentation transcript:

Perl 语言

第九章 用正则表达式处理文本 1 用s///替换 △ ※ 2 相关函数 3 列表上下文中的m// 4 更强大的正则表达式

9.1 用s///进行替换 m// 等同于“查询(search)”功能, s ///类似于“查询并替换” $_ =“He’s out bowling with Barney tonight.”; s/Barney/Fred/; #Barney 被Fred 替换掉 print “$_\n”; s/with (\w+)/agaist $1’s team/; print “$_\n”; #为“He’s out bowling against Fred’s team tonight”

9.1 用s///进行替换 $_ =“green scaly dinosaur”; s/(\w+) (\w+)/$2, $1/; #现在为“scaly, green dinosaur”; s/^/huge, /; #现在为“huge, scaly, green dinosaur” s/,.*een//; #空替换,现在为“huge dinosaur” s/green/red/; #匹配失败,仍然为“huge dinosaur” s/\w+$/($`!)$& /; #现在为“huge (huge !)dinosaur” s//\s+(!\W+)/$1 /; #现在为“huge (huge!) dinosaur” s/huge/gigantic/; #现在为“gigantic (huge!) dinosaur” if (s/huge/gigantic/){ print “It matched!\n” } #s///返回布尔值

用/g进行全局替换 s///值进行一次替换,无论是否还有地方还能匹配上。 修饰/g 要求s///将所有匹配上的部分都进行替换: $_ = “home, sweet home!”; s/home/cave/g; print “$_\n”; # “cave, sweet cave!” 应用:s///g缩减字符串中的空白。 $_ =“Input data\t may have extra whitespace.”; s/\s+/ /g; #现在是“Input data may have extra whitespace.” s/^\s+//; #将开头的空白去掉 s/\s+$//; #将结尾的空白去掉 s/^\s+|\s+$//g; #将开头,结尾的空白去掉

不同的定界符 m//和qw//,可以改变使用其他定界符 s///的分隔符也可以。但使用3个分隔符,有些不同。 s{fred}{barney}; s[fred](barney); s<fred>#barney#;

可用替换修饰符 除了/g 修饰符外,替换操作中还可使用/i, /x, 和/s,修饰前部分的模式这些在普通的模式匹配中已经出现过的修饰符。无顺序。 s#wilma#Wilma#gi; #所有WilmA(不分大小写),替换Wilma s{_ _END_ _.*}{ }s; #将__END__ 标记及其后面内容去掉

无损替换 如果需要同时保留原始字符串和替换后的字符串,传统的办法是先复制一份,再替换 默认状态下,s///返回的成功替换的次数 my $original = ‘Fred ate 1 rib’; my $copy = $original; $copy =~ s/\d+ ribs?/10 ribs/; (my $copy = $original) =~ s/\d+ ribs?/10 ribs/; #先赋值,后替换 my $copy = $original =~ s/\d+ ribs?/10 ribs/r; #先替换,后赋值

大小写转换 修饰符\U 要求接下来的字符均是大写: 修饰符\L 要求接下来的字符均是小写: $_ =“I saw Barney with Fred.”; s/(fred|barney)/\U$1/gi; #$_现在是“I saw BARNEY with FRED.” s/(fred)|barney/\L$1/gi; #$_现在是“I saw barney with fred.” s/(\w+) with (\w+)/\U$2\E with $1/I; #$_ 现在是“I saw FRED with barney.”

大小写转换 修饰符\u 要求接下来的一个字符大写: 修饰符\l 要求接下来的一个字符小写: s/ (fred|barney)/\u$1/ig; #$_现在是“I saw FRED with Barney.” s/(fred|barney)/\u\L$1/ig; #$_现在为“I saw Fred with Barney.” print “Hello, \L\u$name\E, would you like to play a game?\n” #也可以在双引号中使用此修饰符

9.2 相关函数 split操作符:根据模式拆分字符串 my @fields = split /separator/, $string; 根据模式扫描字符串,按照模式匹配分隔字符串,如果匹配成功,该处就是当前字段的结尾,下一个字段的开头。任何匹配的内容都不会出现在返回值中。 @fields = split /:/, “abc:def:g:h”; #返回(“abc”, “def”, “g”, “h”) @fields = split /:/, “abc:def::g:h”; #得到(“abc”, “def”, “”, “g”, “h”)

9.2 相关函数 如果有两个分隔符是连在一起的,则可能得到空的元素 开头的空元素会被返回,但结尾的空元素被丢弃 @fields = split /:/, “:::a:b:c:::”; #得到(“”, “”, “”, “a”, “b”, “c”); my $some_input = “This is a \t test.\n”; my @args = split /\s+/, $some_input; #(“This”, “is”, “a”, “test.”)

9.2 相关函数 默认时,split 对$_操作,模式为空白: my @fields = split; #同split /\s+/, $_; my @fields = split ‘’, ‘abcdef’; #将字符串分解为单个字符;

9.2 相关函数 join函数 不使用模式,与split 相反的操作:将这些分割的部分组合成一个整体。 join 函数的第一个参数是‘胶水’,它可以是任意字符串。剩下的参数是要被粘合的部分。join 将粘合元素添加在这些部分之间,并返回其结果: my $x = join “:”, 4, 6, 8, 10, 12; #$x 为“4:6:8:10:12”

9.2 相关函数 被粘合的参数至少要有两个元素,否则胶水无法添加 my $y = join “foo”, “bar”; #得到“bar” my @empty; #空数组 my $empty = join “baz”, @empty; #没有元素,因此为空串 my $x = join “:”, 4, 6, 8, 10, 12; my @values = split /:/, $x; #@values 为(4, 6, 8, 10, 12) my $z =join “-”, @values; #$z 为“4-6-8-10-12”

9.3 列表上下文中的m// 列表上下文中,模式返回的捕获组得到的列表 $_ =“Hello there, neighbor!”; my($first, $second, $third) =/(\S+) (\S+), (\S+)/; print “$second is my $third\n”;

9.3 列表上下文中的m// /g修饰符,可以使用到s///, 也可以修饰m//,意为匹配到字符串中的对个地方。 my $data = “Barney Rubble Fred FlintstoneWilma Flintstone”; my %last_name = ($data =~ / (\w+)\S+(\w+)/g);

9.4更强大的正则表达式 量词:*, + ,? {3,5}---贪婪量词 Perl默认在保证整体匹配的前提下,会尽量匹配长字符串 fred and barney went bowling last night 用/fred.+barney/进行匹配-----大量的回溯动作,直到匹配成功 非贪婪量词----*?, +? ,?? {3,5}? Perl默认会尽量匹配短字符串 fred and barney went bowling last night 用/fred.+barney/进行匹配-----大量的回溯动作,直到匹配成功

9.4更强大的正则表达式 正则表达式的速度依赖于具体的数据。 贪婪量词与非贪婪量词的差别 I’am talking about the cartoon with Fred and <BOLD>Wilma</BOLD>! s#<BOLD>(.*)</BOLD>#$1#g; I thought you said Fred and <BOLD>Velma</BOLD>, not <BOLD>Wilma</BOLD> $#<BOLD>(.*?)</BOLD>#$1#g;

跨行的模式匹配-替换 在多行字符串中,也可以分别针对每一行进行替换。 /m $filename = "ex9.txt"; if (!open FILE, $filename){ die "Can't open '$filename': $!"; } my $lines = join '', <FILE>; $lines =~ s/^/$filename: /gm; print $lines;

本章小结 掌握:替换;split; join 熟悉:列表上下文中的m//,非贪婪量词 了解:跨行替换

Thank You ! www.themegallery.com