正则表达式培训.ppt
1 1为了安全为了安全 总是握奇总是握奇正则表达式培训正则表达式培训2010年 1月 6日2 2为了安全为了安全 总是握奇总是握奇目录什么是正则表达式解决的问题解决的问题组成使用说明3 3为了安全为了安全 总是握奇总是握奇什么是正则表达式正则表达式,就是用某种模式去匹配一类字符串的一个公式正则表达式的缩影:Sql语法中的like%key%Linux中的grep ps ef|grep javaJava 中的String.replace(pattern,s)4 4为了安全为了安全 总是握奇总是握奇解决的问题检索文本文本中是否有我们希望出现的串匹配文本当前的文本是否符合我们给定的模式替换文本基于给定模式进行的替换5 5为了安全为了安全 总是握奇总是握奇目录什么是正则表达式解决的问题组成组成使用说明6 6为了安全为了安全 总是握奇总是握奇组成正则表达式由一些普通字符和一些元字符(metacharacters)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义例子 apple 可以匹配 apple 和apple1237 7为了安全为了安全 总是握奇总是握奇元字符.可以匹配任何字符例子 ap.le 可以匹配 apple 也可以匹配apole 甚至 aple$行结束符例子 apple$可以匹配 apple 也可以匹配1kapple 但不能匹配 apple5 行起始符例子 apple apple apple5 1kapple 转义符例子 12$可以匹配 12$8 8为了安全为了安全 总是握奇总是握奇 表示集合abcdpple 可以匹配 apple bpple cpple dpple0-9 可以匹配 0或1或9a-z 可以匹配a或bzA-Z 可以匹配A或BZ特殊的 表示除了这个集合以外的abcdpple 可以匹配除了apple bpple cpple dpple意外的(exp)组将匹配这个表达式的字符保存到一个临时区域(反向引用)(apple)nas 匹配 applenas|或(him|her)匹配 it is him 或 it is her+表示前面的一个字符或组重复1次或多次ap+le 匹配 apple appple apppple?表示前面的一个字符或组重复0次或1次ap?le匹配 aple apple9 9为了安全为了安全 总是握奇总是握奇表示前面的一个字符或一个组重复指定的次数2 恰好两次2,至少两次2,5重复2-5次元字符中特殊的 b boundary 表示匹配行边界bappleb 匹配apple 但不匹配 1apple apple1 1apple1w words 是0-9a-zA-Z_的简写d digital 是0-9的简写s space 是空格的简写贪婪的 与懒惰的如a.*p 会匹配abpadp但实际上到abp时已经可以匹配了 a.*?p表示非贪婪如匹配网页中所有的html标签 可以用1010为了安全为了安全 总是握奇总是握奇选项g 全局匹配i 忽略大小写m 多行模式他们的大写都表示相反的意思练习 匹配一个注释 /*some wolds*/*.*/$匹配邮件地址 da-z+.*w*dw+.a-z2,3$i匹配HTML所有标签 匹配一个ip地址d1,3.d1,3.d1,3.d1,3 简写(d1,3.)3d1,3(1?d?d)|(20-4d)|(250-5).)3(1?d?d)|(20-4d)|(250-5)正则表达式只适合判断格式不适合判断范围1111为了安全为了安全 总是握奇总是握奇正向搜索 与反向搜索正向搜索(?=xxxxxxx)在右侧必须能够匹配上xxxxx(?!xxxxxx)在右侧必须不能匹配上xxxxx表达式 w+()中的aaw+(?!)中 的 bb反向搜索(?xxxxxxx)在左侧侧必须能够匹配上xxxxx(?!xxxxxxx)在左侧侧必须不能够匹配上xxxxx1212为了安全为了安全 总是握奇总是握奇目录什么是正则表达式解决的问题组成使用说明使用说明1313为了安全为了安全 总是握奇总是握奇Java中的正则表达式Jdk自己的实现 1414为了安全为了安全 总是握奇总是握奇Apache ORO 实现1515为了安全为了安全 总是握奇总是握奇Javascript中的正则表达式匹配匹配1616为了安全为了安全 总是握奇总是握奇Eclipse插件site:/Thanks