Perl 语言 1.

Slides:



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

四川财经职业学院会计一系会计综合实训 目录 情境 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日
初級游泳教學.
爱国卫生工作的持续发展 区爱卫办 俞贞龙.
第八章 数学活动 方程组图象解法和实际应用
本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响. 本课内容提要 一、汇率的含义 二、汇率变化与币值的关系 三、汇率变化的影响.
散文鉴赏方法谈.
105學年度國民中學技藝教育 專案編班申辦說明會
比亚迪集成创新模式探究 深圳大学2010届本科毕业论文答辩 姓名:卓华毅 专业:工商管理 学号: 指导老师:刘莉
如何撰写青年基金申请书 报 告 人: 吴 金 随.
点击输 入标题 点击输入说明性文字.
國際志工海外僑校服務 越南 國立臺中教育大學 2010年國際志工團隊.
痰 饮.
學分抵免原則及 學分抵免線上操作說明會.
教 学 查 房 黄宗海 南方医科大学第二临床医学院 外科学教研室.
评 建 工 作 安 排.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
“十二五”国家科技计划经费管理改革培训 概预算申报与审批 国家科学技术部 2012年5月.
首都体育学院 武术与表演学院 张长念 太极拳技击运用之擒拿 首都体育学院 武术与表演学院 张长念
现行英语中考考试内容与形式的利与弊 黑龙江省教育学院 于 钢 2016, 07,黄山.
第5讲:比较安全学的创建 吴 超 教授 (O)
彰化縣西勢國小備課工作坊 新生入學的班級經營 主講:黃盈禎
重庆市西永组团K标准分区基本情况介绍.
唐山美食 ——特色小吃.
自 然 探 索 圓周美語 My name is.
战争结束了 年11月,听到停战的消息,巴黎街头人们欣喜若狂。法国总理克里孟梭说:“吻我的姑娘有500多个了。”
~永靖國小友善校園週宣導~ 友善校園週宣導 胡慧嘉 校長.
年度校樹選拔秀 主辦單位:楊梅國小.
唐雪峰 四川省疾病预防控制中心 四川省促进基本公共卫生服务均等化指导中心 2015年1月30日
技能竞赛促进专业建设 常州刘国钧高等职业技术学校 信息工程系 李文刚
代表机构年报操作指南 (代表机构端) 二〇一一年二月.
浅谈---- 敦煌莫高窟 的保护
簡介內容 校長的話 創校簡史 校訓 辦學理念 辦學特色 未來展望 優質校園 全新設備 優秀師資 優質學習環境 辦學績效 體育績優
歡迎委員 蒞臨指導 生態有機校園評鑑 簡報 石龜國小104學年度 石龜團隊: 校 長 高啟順 訓導組長 廖美智
小组成员:陈燕平、郭思施,阿圣卉、谢建敏、伍琼孝、杨梅、陈建梅
第四章 员工招聘与甄选.
药店会员制营销.
Module2 Unit 1 What’s your name?.
國民小學資優資源班 專 題 研 究 課 程 獅 子 王 國 的 大 探 險.
台 語 臆 謎 猜 動 物 篇.
05 债务重组.
Presentation transcript:

Perl 语言 1

第八章用正则表达式进行匹配 1 用m//进行匹配 ※ 2 模式匹配修饰符 △ 3 锚位 △ 4 捕获变量 2

现在你将学习怎样在Perl 中使用正则表达式。 3

8.1使用m//匹配 我们曾经将模式放在一对正斜线(//)里面,如/fred/。 实际上是m//(模式匹配)的一种简写。同qw//。 也可以使用m(fred), m<fred>, m{fred}, m[fred],或者m,fred,, m!fred!, m^fred^。 如果使用//,可以省略m 4

8.1使用m//匹配 建议:使用模式中不会出现的字符作为分隔符。 /http:\/\// #匹配http://。 5

8.2 模式匹配修饰符 修饰符(modifier),通常叫做标记(flag),可以后缀在正则表达式后面来改变其默认的行为。 要创建一个大小写无关的模式,如匹配FRED 时,也能匹配上fred, Fred,可以使用修饰符/i: print “Would you like to play a game?”; chomp($_ = <STDIN>); if(/yes/i) { #大小写无关 print “In that case, I recommend that you go bowling.\n”; } 6

8.2 模式匹配修饰符 2.匹配任何字符:/s 点(.)不匹配换行符,如果希望点(.)能匹配任意字符(包括换行符),可以使用/s 修饰符。 此时(.)相当于 [\d\D] $_ = “I saw Barney\ndown at the bowing alley\nwith Fred\nlast night.\n”; if(/Barney.*Fred/s){ print “That string mentions Fred after Barney!\n”; } 7

8.2 模式匹配修饰符 3.加入空白符:/x 允许你在模式中加入任何数量的空白,以方便阅读: /-?\d+\.?\d*/ #这是什么含义? / -? \d+ \.? \d* /x #要好些 由于/x 允许模式中使用空白,原来模式中的空格,制表符等将被忽略。可以使用\s(\s*或\s+)。 $_=“4 4” / \d \d/x #错误 / \d \s+ \d/x #成功 8

8.2 模式匹配修饰符 Perl 中,注释可以被作为空白,因此使用/x,可以在模式中加上注释: / -? #可选的负号 -? #可选的负号 \d+ #小数点前一个或多个十进制数字 \.? #可选的小数点 \d* #小数点后一些可选的十进制数字 /x #模式结束 9

8.2 模式匹配修饰符 如果需要匹配井号,可以使用\#或[#] / [0-9]+ #必须出现一个或多个数字 [#]+ #井号字符本身 [0-9]+ #必须出现一个或多个数字 [#]+ #井号字符本身 /x #模式结束 注释部分不能出现定界符号,否则被视为模式终点。 / -? #有减号/没有减号----------错误,使用了定界符 [0-9]+ #必须出现一个或多个数字 [#]+ #井号字符本身 /x #模式结束 10

8.2 模式匹配修饰符 组合选项修饰符 在一个模式中可以使用不止一个修饰符,可以一个接着一个写在模式末尾。其顺序是不重要的: if(/barney.*fred/is){ # /i 和/s print “That string mentions Fred after Barney!\n”; } if (m{ barney #小伙子barney .* #可以包含任何字符,包括换行符 fred #小伙子fred }six) { #修饰符包括包括/s, /i, /x print “That string mentions Fred after Barney!\n”; } 11

8.3 锚位 默认情况下,如果模式在字符串开头没能匹配上,它会顺着字符串下去,直到匹配上为止。 锚定(anchors):要求模式在特定的位置进行匹配 \A锚位匹配字符串的绝对开头,如果在开始位置不匹配,则不会顺移到下一个位置。 m(\Ahttps?://)i #判断字符串是否以https开头 12

8.3 锚位 \z锚位匹配字符串的绝对末尾 \Z锚位匹配字符串的末尾(允许后面出现换行符) m(\.png\z)i #判断字符串是否以.png结尾 \Z锚位匹配字符串的末尾(允许后面出现换行符) 同时使用行首锚位和行末锚位,确保模式能匹配给定字符串的全部。 /\A\s*\Z/,匹配一个空行,允许出现制表符,空格等 13

8.3 锚位 Perl5之前的版本,使用^,$来锚位字符串开头和结尾,使用方法与\A,\z相同 不同之处: ^,$可以使用/m修饰符,来匹配多行字符串的开头或结尾 $_ ='this is a wilma line barney is on another line but this ends in fred and a final dino line'; if( m/fred$/m ){ print “It matched!\n"; } 14

8.3 锚位 单词锚位 锚位不仅针对字符串的首尾。\b,单词边界锚位/\bfred\b/可以匹配fred, 不能匹配frederick,alfred, manfredmann 称之为“整词匹配” 15

8.3 锚位 单词不是一般的英文单词, 是由一组\w字符构成的字符集。 (字母,数字,下划线组成的字符串) 16

8.3 锚位 单词边界锚位是非常有用的: 如果不希望cat 匹配上delicatessen,可以使用/\bcat\b/ /\bhunt/ 能够匹配hunt, hunting,但不会匹配shunt /stone\b/匹配sandstone, 不匹配capstones。 非词界锚定为\B。任何非\b 匹配的点上进行匹配。 /\bsearch\B/将匹配searches, searching, searched, 但不能匹配search,或者researching。 17

绑定操作符 默认对$_匹配, 绑定操作符( =~ 将右边的模式在左边的字符串上进行匹配,而非匹配$_ 。 绑定操作符( =~ 将右边的模式在左边的字符串上进行匹配,而非匹配$_ 。 my $some_other = “I dream of betty rubble.”; if($some_other =~ /\brub/){ print “Aye, there’s the rub.\n”; } my $likes_perl = <STDIN> =~ /\byes\b/i; #绑定操作符的优先级特别高,先进行匹配,再将匹配的结果赋值給变量。 18

模式中的内插 正则表达式可以被内插,如同双引号字符串一样 my $what = “larry”; while(<>){ if(/^($what)/){ #在字符串前面进行匹配 print “We saw $what in beginning of $_;”; } 19

8.4 捕获变量 圆括号出现的地方一般都会触发正则表达式引擎捕获匹配的字符串。捕获组会把匹配圆括号中模式的字符串保存到相应的地方。捕获组中包含的是原始字符串的内容,不是模式本身。 可以使用反向引用或相应的捕获变量取得这些内容 捕获变量$1, $2 存储第一个,第二个捕获组中的字符串 \1 与 $1 20

8.4 捕获变量 捕获变量是组成正则表达式强大功能的重要部分,它允许取出相应的字符串; 如果字符串不符合模式,则捕获变量为空 $_ = “Hello there, neighbor”; if(/\s([a-zA-Z]+),/){ #空格和逗号之间的词 print “the word was $1\n”; #the word was there } if(/(\S+) (\S+), (\S+)/){ print “words were $1 $2 $3”; #words were Hello there neighbor 21

捕获变量的存续期 这些捕获变量的值会保持不变,直到下一个模式成功匹配为止 如果需要存储捕获变量,则应将其赋值給其他变量 my $wilma = ‘123’; $wilma =~ /(\d+)/; #成功匹配,$1存储123 $wilma =~ /([a-zA-Z]+)/; #不匹配,$1仍然存储123 print “Wilma’s word was $1… or was it?\n” #打印123 my $wilma_word = $1 22

不捕获模式 圆括号会捕获部分的匹配字符串到捕获变量中,但如果我们只想让圆括号执行分组的功能,则需使用“不捕获模式” 不捕获圆括号(?:),仅仅为了分组而存在 if (/(?:bronto)?saurus(steak|burger)/){ print “Fred wants a $1\n”; } 23

命名捕获 要维护$1, $2与圆括号之间的对应关系,比较困难。 my $names = ‘Fred or Barney’; if ($names =~ /(\w+) and (\w+)/){ print “I saw $1 and $2”; #不成功 } if ($names =~ /(\w+) (and|or) (\w+)/){ print “I saw $1 and $2”; #$2得到的是择一匹配的内容,or if ($names =~ /(?<name1>\w+) (?:and|or) (?<name2>\w+)/){ print “I saw $+{name1} and $+{name2}”; 24

命名捕获 这是一种对捕获变量直接命名的方法 捕获的内容会存在特殊哈希%+中,键是捕获时的特殊标签(命名),value是捕获的字符串 (?<LABEL>PATTERN),LABEL可以自行命名, 访问变量$+{LABEL} my $names = ‘Fred or Barney’; if ($names =~ /(?<name1>\w+) (?:and|or) (?<name2>\w+)/){ print “I saw $+{name1} and $+{name2}”; } 25

命名捕获 使用捕获标签后,反向引用也随之变化,原来的\1或\g{1}写出\g{LABEL} my $names = ‘Fred Flintstone and Wilma Flintstone’; if ($names =~ /(?<last_name>\w+) and \w+ \g{last_name}/){ print “I saw $+{last_name} ”; } 26

自动捕获变量 三个变量名为: $&, $`, $’。 $&: 存储整个模式所匹配的字符串 $`:存储匹配区段之前的字符串内容 $’:存储匹配区段之后的字符串内容 if(“Hello there, neigbor”=~ /\s(\w+),/){ print “That actually matched ($&) ($`) ($’) ($1).\n”; #( there,) (Hello) ( neigbor) (there) } 27

通用量词 三个数量词:*, +, ?。 如果表示其他数量使用花括号({}) 模式/a{5,15}/将匹配a5至15次 。a 出现3 次,次数太少,不能匹配;出现5 次,匹配;出现10 次,匹配上。如果出现20 次,仍将匹配上,前15 个将匹配上。 /(fred){3,}/,表示匹配fred3次以上 /\w{8}/,表示匹配8个字符的单词 星号(*)等同于{0,},加号(+)等同于{1,},问号(?)则等同于{0,1} 28

优先级 1.最高等级是圆括号(),分组和捕获 2.第二级是数量词。星号(*), 加号(+),问号(?)以及由花括号表示的数量词,如{5,15}, {3, }, {5}等 3.第三级的是锚定和序列(sequence)。锚定包括(^) ($)(\A)(\z)(\Z)(\b)(\B)。序列abc 4.优先级最低的是择一控制符(|) 5. 原子(atoms),单独字符,反向引用,字符集 29

本章小结 掌握:模式匹配修饰符;锚位;捕获变量;模式中的内插 熟悉:用m//匹配,绑定操作符,通用量词,优先级 了解:测试程序 30

Thank You ! www.themegallery.com 31