正则表达式PPT示例讲解

上传人:ldj****22 文档编号:50604345 上传时间:2018-08-09 格式:PPT 页数:61 大小:944.50KB
返回 下载 相关 举报
正则表达式PPT示例讲解_第1页
第1页 / 共61页
正则表达式PPT示例讲解_第2页
第2页 / 共61页
正则表达式PPT示例讲解_第3页
第3页 / 共61页
正则表达式PPT示例讲解_第4页
第4页 / 共61页
正则表达式PPT示例讲解_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《正则表达式PPT示例讲解》由会员分享,可在线阅读,更多相关《正则表达式PPT示例讲解(61页珍藏版)》请在金锄头文库上搜索。

1、Using Regular ExpressionsUsing Regular ExpressionsLecture Goal 熟悉Regex的基本语法 了解高级概念 如何构建、如何使用 了解在C#、JavaScript中的完整实现 相关技巧 资料分享Agenda IntroductionSome notes about Regular Expressions Why and when to use Regular Expressions Basic GrammarMatch characters Set match position Replace 、Repeated characters O

2、ther Characters Senior ConceptMatching Patterns Group、Replace、Reverse quote Priority level order Methods、Ideas for building Regular Expressions Examples Analysis Additional MattersExperience :$()|+) 尽不用.*的贪婪模式DEMOReplace 、Repeated charactersnn 是非负整数。正好匹配 n 次。例如,“o2”与“Bob”中的“o”不匹配, 但与“food”中的两个“o”匹配

3、,DEMOn,n 是非负整数。匹配 n 次或多次。例如,“o2,”不匹配“Bob”中的“o”, 而匹配“foooood”中的所有 o。o1, 等效于 o+。o0, 等效于 o*。n,mm 和 n 是非负整数,其中 n ”,然后匹配对应的结束标记“”,但是我们不知道开始标记是什么,所以无法指定结束标记的内容,除非使用 了反向引用。Group、Replace、Reverse quote Group 命名 组可以用(?pattern模式|子模式)命名 组没命名时,默认每个组按顺序组号1、2、3.访问 组名是区分大小写的 组引用、提取 数字、$数字、$组名嵌套时,外面()为优先编号顺序 引用组匹配是必

4、须和你所引用的组输入的内容完全匹配,而不 是和引用组的表达式匹配 比如:(d)111 输入12不匹配,但匹配11 (?d1,2)/(?d1,2)/(?(?:d4|d2)(? x) 中的(?:d4|d2)不获取捕获结果,也即是不存储到后面进 行替换或查找操作,不拥有捕获组的特性 NOTEGroup、Replace、Reverse quote Group(简单的分组) 捕获(存储匹配成功的模式是Rege党特性): 此分组字符组合模式在括号内匹配的字符,它是一个捕获组,也就是 说被模式匹配的字符成为最终匹配的一部分。 假设有如下的输入字符串:ABC1 DEF2 XY,下面的表达式匹配了从 A到Z的3

5、个字符,然后是一个数字:(a-zA-Z3)d ,每次匹配都含 有一个组,即组被捕获。 ABC1 下一个匹配 DEF2 下一个匹配 有了反向引用,就可通过表达式中的数字访问组,也可通过。NET中 的Group和GroupCollection类访问组,后面将阐述:Group、Replace、Reverse quote Group(简单的分组) 非捕获(忽略匹配串存储到缓冲区?:、?=、?!): 不捕获结果作为匹配或替换等操作 提取xyz时不需要).*?(?=) 提取所有HTML标记:Group、Replace、Reverse quote Replace: 实现匹配,Replace方法都将执行一次全

6、局搜索并替换输入字符串 (Mr|Mrs|Miss|Ms|Dr) A-Za-z* $1 X代替Mr X替换输出:($组号) $group 用group指定的组号作替换 $name 替换由组(?)匹配的最后一个子串 $ 替换字符$Group、Replace、Reverse quote Reverse quote: 提供了确定文字中重复出现(连续)两个或多个相同 单词的位置的能力,也可是出现的组整体 例子: 匹配上一组可用“组号” 、”k” in the the second. (a-zA-Z+)s1 或 (?(a-zA-Z+)sk 替换文本:$1 输出:in the second. (a-z+)

7、1则匹配a a或hello hello DEMOGroup、Replace、Reverse quote 可给组命名,通过名称反向引用此组: (?ba-zA-Z+b)sk在使用反向引用时,指定八进制数会使反向引用变得 混乱,1和9总是用作反向引用,任何以0打头的数字,如 040将作为一个八进制数处理,它代表一个ASCII字符, 如果一个数字没有以0打头,它将作为一个反向引用处理 ,前提是有一个匹配组用于反向引用。如果拥有11个组, 那么11将匹配第11个组,如果只有10个组,那么11作为 代表一个ASCII字符的八进制数被处理。Senior ConceptPriority Level Order

8、Priority Level Order正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式 非常类似,诸如操作系统中的优先级调度也属于一种顺序。下表从最 高到最低说明了各种正则表达式运算符的优先级顺序:转义符(), (?:), (?=), 括号和中括号*, +, ?, n, n, n,m 限定符 , $, anymetacharacter, anycharacter 定位点和序列 | 替换 (d1|a-zA-Z1,)+ DEMOSenior Concept在表达式中作决策在表达式中作决策 决策? 简单的看成是判断、选择。 | 可做简单的决策判断条件。x|y 有两个更高级的决策指令:e

9、xpression和name (?(expression)yes|no) 如果匹配了expression,表达式将 试图匹配yes,否则no (?(?=expression)yes|no) 作决策的模式expression的长度为0,代表了yes或no的表 达式将从与expression相同的位置开始匹配。DEMOSenior ConceptMethods、Ideas for building Regular ExpressionsHow to build Regular Expressions编译原理 词法分析、语法分析匹配规则 Regexes不适合匹配复杂的语法词法规则 和创建数学表达式的

10、方法一样,用多种元字符与操作符将小的表 达式结合起来,创建更长、更复杂的表达式。 正则表达式的组件可以是单个的字符、字符集合、字符范围、字 符间的选择或者所有这些组件的任意组合。 构建方法的灵活、多样性归因于需求条件的多样化不同的语言里会有细节的不同: 对于 JScript,分隔符是正斜杠 (/) 字符。例如:/expression/ How to build Regular ExpressionsC#中正则的应用:(Short View) 1、Namespace System.Text.RegularExpressions 8个类 类描述 Regex 包含了正表,以及使用正表的各种方法 Ma

11、tchCollection 包含一个正表找到的所有匹配项、Match序列 Match 包含了一次匹配中所有匹配的结果 GroupCollection 所有分组 Group 一个分组集合中一个组的细节,一次组记录的结果 CaptureCollection 一个组的所有Capture对象 Capture 返回组内一次捕获所匹配的字符串 RegexCompilationInfo 提供了把Regex编译为一个独立程序集所需的细节 How to build Regular Expressions2、Regex类 Regex可创建正表,还提供很多有用方法来操作使用正表(搜索字符模式和复杂的查 找替换),如

12、把一个正表用于不同的字符串,就可创建一个Regex对象,但许多类的 方法都是静态方法,也就是说,如正表只使用一次,那么直接使用所需方法要比创建一个Regex对象更有效,如使用静态的Replace方法: Regex.Replace(string input, string pattern , string replacement) RegexOptions参数Attribute DescriptionIgnoreCase 忽略大小写,默认是区分大小写的 RightToLeft 右到左查找输入串,默认顺序是左到右,符合英语自左到右的习惯, 不同于阿拉伯语 None 不设定标志,这是默认选项,表示搜

13、索区分大小写,且从左到右进行 MultiLine指定和$可匹配行的开头和结尾,及串的开头和结尾,使用换行符分 隔,在每一行都能得到不同的匹配,但字符”.”仍然不匹配换行符 SingleLine 规定”.”匹配人一字符,换行符除外,默认是”.”不匹配换行符 How to build Regular Expressions 3、类构造函数(备注) Regex(string pattern) Regex(string pattern, RegexOptions options) Regex myRegex = new Regex(规则串); Console.WriteLine(myRegex.IsM

14、atch(带检验文本); 、Other Functions IsMatch()检测是否匹配当前规则的串 Replace()静态,用指定的字符代替一个匹配模式,有十种变体 Matches Split Escape对串中的正则式进行转义处理How to build Regular Expressions Match类和MatchCollection类 利用这两个类,可获得通过一个正则表达式实现的每一次匹配的细节,Match类表示一次匹配,而MatchCollection类,是一个Match对象的集合,其中没一个对象都代表一次成功的匹配。需要这两个类方 法来检索匹配。 Group和GroupColl

15、ection类 将上面的字符子串作为子集合对象(组形成的对象)Examples AnalysisSimple demoSimple demo 1、验证jpg,jpeg,gif,bmp格式的文件名,大小写均可? DEMO 2、验证15位、17位、18位身份证号码? 15位数字(d15) 18位数字(d18) 18位(前17位数字,后可为字母X) (d17x) DEMO 3、字符串过滤的换向思维 DEMO 4、结尾不为”/”的多种写法? /、(?!/)、。$ 5、取中间值的几种写法? sdfsfsdf(fdsfds)fdsfdsf (.*?)、(? DEMO 7、匹配日期 (?d1,2)/(?d1,2)/(?(?:d4| d2) 2/31/2006? 8、URL (?w+):/(?w.+/?)S*(?x) (=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号