Confidential Property

Slides:



Advertisements
Similar presentations
第十一课 公正处理民事关系. 听歌曲《我想有个家》,阅读结婚誓词,回答 : 如何才能拥有一个幸福、温馨的家庭? 导 入 导 入 探究活动一:幸福、温馨家庭的讨论 亲情和爱情的精心维护 法律的有力保护 品味 与 感悟 家庭是父亲 的王国,母 亲的世界, 儿童的乐园 。 —— 爱默生.
Advertisements

A A A.
山西职业技术学院 蒋晋红.
强力打造湖北农业信息网 全面推进湖北农村信息化
黄金时代 黄金时代:老子,释迦牟尼,苏格拉底,孔子,庄子,耶稣…… 他们是人类智慧的顶峰,他们用人生展示了智慧与慈爱。
存量房交易纳税评估 系统简介 常州市武进地方税务局 政策法规科 2011 年 7 月.
诚信为本、操守为重、坚持准则、不做假账 第 九 章 会 计 报 表.
第一章 专利的种类 一、发明专利 20年 二、实用新型专利 10年 三、外观设计专利 10年
本章重點 認識衣物的基本保養程序 處理不同污漬的方法 不同布料的保養方法
第八章 组织文化的整合 ——并购中的文化整合(二) 小组成员:浦若蓉、朱谷一、贾彦彦.
普通高等学校 本科教学工作水平评估方案.
第四章 商代之舞蹈 本檔案圖片來源:google圖片.
8 企业信息管理的定量分析 第八讲 企业信息管理的定量分析 8.1 企业信息化水平的测评 8.2 企业信息管理绩效的测评.
105年桃連區適性入學宣導 桃園市十二年國民基本教育宣導團 宣講講師:龍岡國中 校長 郭玉承 時 間:105年 3 月 9 日 1.
班級:醫管3B 組別:第二組 組員:王品媛、郭雅瑄、謝淑玲、蔡孟蔙
通州国税纳税信用等级A类纳税人 取消发票认证操作培训 2016 通州国税.
嗇色園主辦可立小學 故宮 製作日期:2011年3月21日.
市场营销类流程化系列教材 市场营销综合实训 主编:渤海大学 单凤儒 教授 科学出版社.
彰显语文教育特性 立意学生能力发展 ——《语文》新教材第三册解析
什么是工业? 采取自然物质资源,制造生产资料 、生活资料,或对农产品、半成品进行加工的生产事业。
狂犬病 保護你我,愛護動物 武漢國中 黃憶暄.
江苏省2008年普通高校 招生录取办法 常熟理工学院学生处
迪士尼動畫 玩具總動員1.
成才之路 · 语文 人教版 • 中国古代诗歌散文欣赏 路漫漫其修远兮 吾将上下而求索.
七(7)中队读书节 韩茜、蒋霁制作.
本章重點 認識香港不同年代時裝的特色 透過對服裝歷史的認識,了解香港的穿衣文化 透過服裝歷史加強對時裝潮流循環的洞悉力
不会宽容人的人, 是不配受到别人的宽容的。 贝尔奈.
复习回顾 a a×a a×a×a a a×a×a= a×a= 1.如图,边长为a厘米的正方形的面积 为 平方厘米。
财经法规与会计职业道德 (7) 四川财经职业学院.
課程實錄.
參、計畫目標與發展策略 一、規劃課題與對策
校內科學園遊會 製作說明會 教務處設備組
问题解决与创造思维 刘 国 权 吉林省高等学校师资培训中心.
第四单元 自觉依法律己 避免违法犯罪.
動物的繁殖行為.
5,2 新时代的劳动者.
105年臺北市 優先免試入學 高中職免試入學 五專免試入學 報名方式宣導
大肚宮廟巡禮.
行動報告人:丁俊源 行動參與人和單位: 我們全家人 社區鄰居、管委會 新北市環保局
第二部分 人文地理 第一单元 人口与城市 第5课 城市化过程和特点. 第二部分 人文地理 第一单元 人口与城市 第5课 城市化过程和特点.
形式语言与自动机 第四章 正则表达式 南京航空航天大学 计算机科学与技术学院 关东海
熊貓 設計者:鄧澤怡 班別:6B2 學校:華德學校.
我国的宗教政策 第七课第三框.
情歌分享小組作業.
劳模的风采.
温 馨 提 示 感谢您从“河姆渡教师教育网”下载使用该PPT文件,仅供学习参考,未经作者同意勿在公开场合使用,谢谢合作!
《7.1 力》说课稿 丰城中学 杨青青.
第2节 染色体变异.
电在我们日常生活、现代化社会中的应用: 电 是 什 么?.
正、反比例意义的巩固练习.
必备职业素养 主讲:程华.
旅游服务与管理专业 知识点7 道教教主老子圣迹 任务三 道 教 主题二 中国四大宗教 辉县市职业中等专业学校 辉县市职业中等专业学校
课程及其教学标准 主讲:傅文清
大綱: AAA 性質 SAS 性質 SSS 性質 顧震宇 台灣數位學習科技股份有限公司
《中级经济法》模考点评 主讲老师:武劲松.
行行重行行,與君生別離。 相去萬餘里,各在天一涯。 行行重行行:走了一程又一程 生別離:在有生之年分離 語出楚辭:「悲莫悲兮生別離,
北極熊 華德學校 田根繩.
语文专题课 执教者: 平望二中 黄小林 视频.
班級:財金一A 姓名:吳佩玲 學號:4990S024 指導老師:蔡享翰 老師
知识点二 国际环境法的实施.
瀕臨絕種—北極熊 設計者:吳柏曦 班別:5B1 學校:華德學校.
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
植物激素的调节 一、生长素的发现过程 动物激素是由内分泌细胞合成与分泌。 1、达尔文实验:①证明单侧光照射能使 产生
大綱: 母子相似性質 內、外分比性質 重點複習 顧震宇 台灣數位學習科技股份有限公司
教育處資訊服務入口 功能簡介.
喜雨亭記 國二甲 S 陳姿婷.
§12-5 同方向同频率两个简谐振动的合成 一. 同方向同频率的简谐振动的合成 1. 分振动 : 2. 合振动 : 解析法
校內科學園遊會 製作說明會 教務處設備組
新竹縣108年第一次鑑定安置 學前心評教師職前說明會
05 债务重组.
Presentation transcript:

Confidential Property

Confidential Property 漫谈正则表达式 作者:Shy.Song 日期:2013-01-11 Confidential Property

Confidential Property 1 正则意义——搜索 工作中搜索一类文件 开发中找到一段代码 运维中查找一行日志 程序中匹配一个邮箱 *.doc 使用通配符可以查找指定模式内容 2012??.log Confidential Property

Confidential Property 1 最简单的正则 表达式: shy 能匹配的字符串: I am shy Luckyshy 123shy321 shy Confidential Property

Confidential Property 1 最简单的正则 我只想匹配自己: \bshy\b 匹配的结果: I am shy Luckyshy 123shy321 shy Confidential Property

Confidential Property 1 最简单的正则 \b \w \d () [] \W \s \S …… 这些符号的意义? (?>) (?<=) (?<!) \P{Inname} \p{Inname} 那这些又是什么? \x{4e00}-\x{9fa5} \x80-\xff 再看看这几个呢? Confidential Property

Confidential Property 2 正则表达式——字符 12个特殊的字符:$ ( ) * + . ? [ \ ^ { | 搜索它们自身需要在前面加反斜线来匹配。 字符组结构 [0-9] 数字0到数组9之间的任意一个 [a-z] 字母a到字母z的任意一个 [^shy] 除了字母shy的任意一个字符 [\u4e00-\u9fa5] 汉字中的任意一个汉字 [^a-z] 除了字母 a 到字母z的任意一个字符 [0-z] 匹配asicii码中0到z的其中一个字符 | 多选分支,或者关系 \1 \2 …反向引用 < (\w) >.*</\1> 引用第一个捕获组的结果,用于匹配html的闭合标签 ab|cd a(b|c)d 匹配abcd还是abd,acd Confidential Property

Confidential Property 2 正则表达式——模式 正则表达式定义:一个正则表达式通常被称为一个模式 (pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。 高级正则离不开模式 . 除换行以外的其他任意字符 \s 空白字符 \S 除空白字符以外的任意字符 \w 字母、数字、下划线 \W 除了字母、数字、下划线以外的任意字符 \d 数字 0-9 \D 除了数字之外的任意字符 \b 单词边界 ^ 字符串的开始 $ 字符串结束 * 0到无数次 + 1到无数次 ? 0或者1次 {n} 重复N次 {n,} 重复至少N次 {n,m} n到m次 [] 字符组,字符范围 () 捕获组(子表达式) Confidential Property

Confidential Property 2 正则表达式——位置 “^”代表字符串的开头 “$”代表字符串的结尾 表达式: 表达式: ^Shy$ ^shy Shy$ 匹配: 匹配: shy is Shy. shy123Shy Shy is shy. Hi,shy! shy is Shy shy123Shy Shy is shy. Hi,shy! Confidential Property

Confidential Property 2 正则表达式——选择 方括号“[ ]”匹配指定一堆字符中的一个。 例子说明一切 ^[a-z]hy$ :why shy ^[A-Za-z]hy$ :why Why shy ^[uvwxyz]hy$ :why zhy yhy [a-zA-Z0-9_.-] :email [a-zA-Z0-9.-_] :not email(;?[]<…) Confidential Property

Confidential Property 2 正则表达式——重复 “+” 表示前一字符模式可以被重复1次或n次。 “*” 表示前一字符模式可以被重复0次或n次。 “{x,y}”表示前一字符模式可以被重复x到y次。 “{x,}” 表示前一字符模式可以被重复至少x次。 例子说明一切 ^go+gle$ :gogle google gooooooooooogle ^g[aeiou]+gle$ :gogle geagle gaeiouaeiougle ^go*gle$ :ggle google gooooooooooogle ^go{2,4}gle$ :google gooogle goooole ^go{2,}gle$ :google gooogle goooole gooooole … ^(shy )*is( shy)*$ :shy is shy shy shy Confidential Property

Confidential Property 2 正则表达式——分支 分支“|”用来指定几个规则只要匹配一个规则即成匹配。 例子说明一切 ^com$|^org$|^net$ :com org net ^shy.(com|org|net)$ :shy.com shy+net shy$net ^go*gle$ :ggle google gooooooooooogle ^go{2,4}gle$ :google gooogle goooole ^go{2,}gle$ :google gooogle goooole gooooole … ^(shy )*is( shy)*$ :shy is shy shy shy Confidential Property

Confidential Property 3 正则深入——起源 1940 神经学家研究出一种模型,认为神经系统在神经元层面上就是这样工作的。N年后数学家描述《正则集合(regular sets)》 1968年Ken Thompson的文章《regualr....》描述一种正则表达式编译器,该编译器生成IBM 7094的OBJECT代码,也诞生了他的qed,也就是后来的UNIX中ed编辑器的基础 ed没qed先进,他有个命令是这样 g/Regular Expresion/p 成为独立的工具grep(以及拓展的egrep) Confidential Property

Confidential Property 3 正则深入——流派 引擎类型 程序 DFA awk(多数版本)、egrep(多数版本)、flex、lex、Mysql 传统NFA GNU Emacs、JAVA、GREP、less、more、PREL、PHP、Python、ruby、sed、vi POSIX NFA mawk DFA/NFA混合 GNU awk、gun grep/egrep DFA: 文本向导引擎。 不允许回溯,不具备反向引用,不可以捕获子表达式。 NFA: 正则向导引擎。(猴急的) 贪婪的,正则优先(更长匹配未被发现,jane|janet两种解决办法) Confidential Property

Confidential Property 3 正则深入——贪婪 “+*?{x,y}” 这些都是贪婪的象征。 “?” 尽可能少的,非贪婪模式。 “+” 贪婪到底,没有退让。 让我们用例子说话 Confidential Property

Confidential Property 3 正则深入——?特殊 (?: 取消捕获分组( (a)\1 ) (?> 取消分组捕获,阻止回溯( (?>a*)a aaa) (?# 注释(正则也有注释!) (?= 肯定型顺序环视 (?<= 肯定型逆序环视 (?! 否定型顺序环视 (?<! 否定型逆序环视 <div>shy</div> (?<=<div>)\w+(?=</div>) Confidential Property

Confidential Property 3 正则深入——组成 正则表达式匹配过程中,如果子表达式匹配到的是字符内容,而非位置,并被保存到最终的匹配结果中,那么就认为这个子表达式是占有字符的;如果子表达式匹配的仅仅是位置,或者匹配的内容并不保存到最终的匹配结果中,那么就认为这个子表达式是零宽度的。 占有字符是互斥的,零宽度是非互斥的。也就是一个字符,同一时间只能由一个子表达式匹配,而一个位置,却可以同时由多个零宽度的子表达式匹配 字符0 字符1 cf 位置0 位置1 位置2 Confidential Property

Confidential Property 3 正则深入——流程 正则的匹配过程,通常情况下都是由一个子表达式(可能为一个普通字符、元字符或元字符序列组成)取得控制权,从字符串的某一位置开始尝试匹配,一个子表达式开始尝试匹配的位置,是从前一子表达匹配成功的结束位置开始的。如正则表达式: (子表达式一)(子表达式二) 假设(子表达式一)为零宽度表达式,由于它匹配开始和结束的位置是同一个,如位置0,那么(子表达式二)是从位置0开始尝试匹配的。 假设(子表达式一)为占有字符的表达式,由于它匹配开始和结束的位置不是同一个,如匹配成功开始于位置0,结束于位置2,那么(子表达式二)是从位置2开始尝试匹配的。 而对于整个表达式来说,通常是由字符串位置0开始尝试匹配的。如果在位置0开始的尝试,匹配到字符串某一位置时整个表达式匹配失败,那么引擎会使正则向前传动,整个表达式从位置1开始重新尝试匹配,依此类推,直到报告匹配成功或尝试到最后一个位置后报告匹配失败。 Confidential Property

Confidential Property 3 正则深入——流程 源字符串:abc 正则表达式:abc 匹配过程: 首先由字符“a”取得控制权,从位置0开始匹配,由“a”来匹配“a”,匹配成功,控制权交给字符“b”;由于“a”已被“a”匹配,所以“b”从位置1开始尝试匹配,由“b”来匹配“b”,匹配成功,控制权交给“c”;由“c”来匹配“c”,匹配成功。 此时正则表达式匹配完成,报告匹配成功。匹配结果为“abc”,开始位置为0,结束位置为3。 Confidential Property

Confidential Property 3 正则深入——流程 源字符串:abc 正则表达式:ab?c 量词“?”属于匹配优先量词,在可匹配可不匹配时,会先选择尝试匹配,只有这种选择会使整个表达式无法匹配成功时,才会尝试让出匹配到的内容。这里的量词“?”是用来修饰字符“b”的,所以“b?”是一个整体。 匹配过程: 首先由字符“a”取得控制权,从位置0开始匹配,由“a”来匹配“a”,匹配成功,控制权交给字符“b?”;由于“?”是匹配优先量词,所以会先尝试进行匹配,由“b?”来匹配“b”,匹配成功,控制权交给“c”,同时记录一个备选状态;由“c”来匹配“c”,匹配成功。记录的备选状态丢弃。 此时正则表达式匹配完成,报告匹配成功。匹配结果为“abc”,开始位置为0,结束位置为3。 Confidential Property

Confidential Property 3 正则深入——流程 源字符串:a12 正则表达式:^(?=[a-z])[a-z0-9]+$ 元字符“^”和“$”匹配的只是位置,顺序环视“(?=[a-z])”只进行匹配,并不占有字符,也不将匹配的内容保存到最终的匹配结果,所以都是零宽度的。这个正则的意义就是匹配由字母或数字组成的,第一个字符是字母的字符串。 Confidential Property

Confidential Property 4 正则升华——优化 例子 DB中有个字段使用了浮点数,需要程序处理。需求是保留小数点后面3位,如果最后一位是0,则保留两位。 字符例子:15.214123、37.500232、154.356 目的: 15.214 37.50 表达式:? (\.\d\d[1-9]?)\d* $1 为什么 (\.\d\d[1-9]?)\d+ $1 Confidential Property

Confidential Property 4 正则升华——习惯 具体说来,就是谨慎用点号这样的元字符,尽可能不用星号和加号这样的任意量词。 只要能确定范围的,例如\w,就不要用点号;只要能够预测重复次数的,就不要用任意量词。 表达式:<div>([a-z0-9])+</div> 字符串:<div>……</div> 1W个字符 引擎会捕获多少个组呢? 说得狠一点,“滥用点号、星号和加号甚至括号是不环保、不负责任的做法”。 Confidential Property

Confidential Property 4 正则升华——高手 Confidential Property

Confidential Property The End Confidential Property