《正则表达式ppt课件》由会员分享,可在线阅读,更多相关《正则表达式ppt课件(16页珍藏版)》请在金锄头文库上搜索。
1、正则表达式Tel:0571-88394222 QQ;什么是正则表达式什么是正则表达式 l在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。 Tel:0571-88394222 QQ;文字符号文字符号 l最基本的正则表达式由单个符号组成。如al特殊字符 :有11个字符被保留作特殊用途。 $ . | ? * + ( )这些特殊字符也被称作元字符。如果你想在正则表达式中将这些字符用作文本字符,你需要用反斜杠“”对其进行换码,即转义。例如想匹配“1+1=2”,正确的表达式为1+1=2T
2、el:0571-88394222 QQ;l不可显示字符 可以使用特殊字符序列来代表某些不可显示字符:t代表Tab(0x09)r代表回车符(0x0D)n代表换行符(0x0A)注意:Windows中文本文件使用“rn”来结束一行而Unix使用“n”。Tel:0571-88394222 QQ;l常用的元字符 . 匹配除换行符以外的任意字符w匹配字母或数字或下划线s匹配任意的空白符d匹配数字匹配字符串的开始$匹配字符串的结束Tel:0571-88394222 QQ;字符集l字符集是由一对方括号“ ”括起来的字符集合 如果你想匹配没有预定义元字符的字符集合 ,只需要在方括号里列出它们就行了。例如0-9代
3、表的含意与d就是完全一致的,表示一位数字;同理,a-z0-9A-Z_也完全等同于w(如果只考虑英文的话)。a-dm-pa 到 d 或 m 到 p:a-dm-p(并集)a-z&defd、e 或 f(交集)Tel:0571-88394222 QQ;l取反字符集 在左方括号“ ”后面紧跟一个尖括号“”,将会对字符集取反。结果是字符集将匹配任何不在方括号中的字符。如q0-9 ,意味着匹配一个q,后面跟着一个不是数字的字符。l取反字符集的简写S= sW = wD = d Tel:0571-88394222 QQ;数量词指定数量,表示前面的字符的重复次数,常见限定符:*重复零次或更多次+重复一次或更多次?
4、重复零次或一次n重复n次n,重复n次或更多次n,m重复n到m次Tel:0571-88394222 QQ;分组l我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?可以用小括号来指定子子表达式表达式(也叫做分组分组),然后就可以指定这个子表达式的重复次数了,也可以对子表达式进行其它一些操作。 如(d1,3.)3d1,3是一个简单的IP地址匹配表达式l注意:只有圆括号“( )”才能用于形成组。“ ”用于定义字符集。“ ”用于定义重复操作。 Tel:0571-88394222 QQ;开始和结束l使用“”和“$”作为行的开始和结束 ,他们匹配的是字符之前
5、或之后的位置 a将会匹配字符串“abc”中的a。而b不会匹配“abc”中的任何字符。 c$匹配“abc”中的c Tel:0571-88394222 QQ;选择符l则表达式中“|”表示选择。你可以用选择符匹配多个可能的正则表达式中的一个 ,X|Y表示X 或 Y如果你想匹配“cat”或“dog”,你可以用cat|dog。如果你想有更多的选择,你只要扩展列表cat|dog|mouse|fish。 Tel:0571-88394222 QQ;中文l匹配中文字符的正则表达式: u4e00-u9fa5Tel:0571-88394222 QQ;相关类l常用类Pattern Matcherl关系:Pattern
6、 p = Ppile(a*b); Matcher m = p.matcher(aaaaab); boolean b = m.matches(); l语句 boolean b = Pattern.matches(“a*b”, “aaaaab”);等效于上面的三个语句,对于重复的匹配而言它效率不高,因为它不允许重用已编译的模式。Tel:0571-88394222 QQ;应用方法举例lpublic boolean matches() 尝试将整个区域与模式匹配lpublic boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列lpublic boolean matches() 尝试将整个区域与模式匹配。Tel:0571-88394222 QQ;练习l设计一个正则表达式来匹配网易邮箱l规则:由字母az(不区分大小写)、数字09、点、减号或下划线组成 只能以数字或字母开头和结尾,且长度为418 Tel:0571-88394222 QQ;联系方式l杭州和盈科技公司lAddress:潮王路238号银地大厦2FTel:0571-88394222 QQ;106159278