Java正则表达式(补充知识)

上传人:飞*** 文档编号:46215260 上传时间:2018-06-24 格式:PPT 页数:25 大小:225KB
返回 下载 相关 举报
Java正则表达式(补充知识)_第1页
第1页 / 共25页
Java正则表达式(补充知识)_第2页
第2页 / 共25页
Java正则表达式(补充知识)_第3页
第3页 / 共25页
Java正则表达式(补充知识)_第4页
第4页 / 共25页
Java正则表达式(补充知识)_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Java正则表达式(补充知识)》由会员分享,可在线阅读,更多相关《Java正则表达式(补充知识)(25页珍藏版)》请在金锄头文库上搜索。

1、Java正则表达式重要声明l许多语言,包括Perl、PHP、Python、 JavaScript和JScript,都支持用正则表达式处 理文本,一些文本编辑器用正则表达式实现高 级“搜索-替换”功能 lJava正则表达式不是javascript正则表达式Java正则表达式优点使用java正则表达式与传统编程相比 优点:l在判断EMAIL等传统编程方法可能需要一二十 行代码,使用正则表达式只需几行代码而已l提高编程效率弊端:l需要学习java正则表达式的用法。基础知识部分l开始java正则表达式的基础知识正则表达式基础知识 我们先从简单的开始。假设你要搜索一个包含字符“cat” 的字符串,搜索用

2、的正则表达式就是“cat”。如果搜索 对大小写不敏感,单词“catalog”、“Catherine”、 “sophisticated”都可以匹配。也就是说: 1.1 句点符号 假设你在玩英文拼字游戏,想要找出三个字母的单词, 而且这些单词必须以“t”字母开头,以“n”字母结束。你 可以使用一个通配符句点符号“.”。这样,完整的 表达式就是“t.n”,它匹配“tan”、“ten”、“tin”和“ton”, 还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的 组合。句点符号匹配所有字符,包括空格、Tab字符 甚至换行符: 1.2 方括号符号 l句点优点是通用,同时缺点也是通用l为了解

3、决句点符号匹配范围过于广泛这一问题,你可以在方括号 (“”)里面指定看来有意义的字符。此时,只有方括号里面指定 的字符才参与匹配。也就是说,正则表达式“taeion”只匹配“tan” 、“Ten”、“tin”和“ton”。但“Tun”不匹配,因为你只能匹配方括号出 现的单个字符在Editplus中举例说明。1.3 “或”符号 l句点和方括号只匹配单个字符,如果要匹配多个字符就要看”或” 运算符了l如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么 ,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹 配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这

4、里不能使用方扩号 ,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆 括号还可以用来分组,具体请参见后面介绍。 在Editplus中举例说明。1.4.1 表示匹配次数的符号 l遇到单个字符的重复问题,就要看下面的符号表了l表一显示了表示匹配次数的符号,这些符号用来确定 紧靠该符号左边的符号出现的次数: 举例:正则表达式: c(a|o|i|a*)t字符串:cat catttt catalog cot cit cet caaaat1.4.2常用符号小结1l句点.表示单个字符l方括号表示可能出现字符集里的单个字符l括号()可表示多个字符l大括号表示次数l转义字符“”l一般正则表达式是由通

5、配符和固定字符组成1.4.3实例图:匹配所有123-12-1234形式的社会安全号码l假设我们要在文本文件中搜索美国的社会安全号码。这个号码的格式是 999-99-9999。用来匹配它的正则表达式。在正则表达式中,连字符(“-” )有着特殊的意义,它表示一个范围,比如从0到9。因此,匹配社会安 全号码中的连字符号时,它的前面要加上一个转义字符“”。l看看下面那一行正则表达式是对的:l(0-9)3 -(0-9)2 - (0-9)4l0-93 -0-92 - 0-94l正确的是:1.4.4实例l假设进行搜索的时候,你希望连字符号可以出现,也可 以不出现即,999-99-9999和999999999

6、都属于正 确的格式。这时,你可以在连字符号后面加上一个数量 限定符号,如图所示: l看看下面那一行正则表达式是对的:l(0-9)3 -?(0-9)2 -? (0-9)4l0-93 -*0-92 -* 0-94l 正确的是:图:匹配所有123-12-1234和123121234形式的社会安全号码 1.4.5实例3l下面我们再来看另外一个例子。美国汽车牌照 的一种格式是四个数字加上二个字母。它的正 则表达式前面是数字部分“0-94”,再加上字 母部分“A-Z2”。图显示了完整的正则表达式 。 图:匹配典型的美国汽车牌照号码,如8836KV1.5 “否”符号 l“”符号称为“否”符号。如果用在方括号

7、内,“” 表示不想要匹配的字符。例如,图四的正则表 达式匹配所有单词,但以“X”字母开头的单词 除外。 图:匹配所有单词,但“X”开头的除外1.6.1 圆括号和空白符号 l假设要从格式为“June 26, 1951”的生日日期中提取出月份部分,用来匹配该日期的正则表达 式可以如图所示:l看看下面哪一个是正确的:la-z* s+ 0-91,2,s* 0-94 la-z+ s+ 0-91,2,s* 0-94l正确的是:图:匹配所有Moth DD,YYYY格式的日期1.6.2 圆括号和空白符号l新出现的“s”符号是空白符号,匹配所有的空白字符,包括Tab字 符。如果字符串正确匹配,接下来如何提取出月

8、份部分呢?只需 在月份周围加上一个圆括号创建一个组,然后用ORO API(本文后面详细讨论)提取出它的值。修改后的正则表达式如图所示: 图:匹配所有Month DD,YYYY格式的 日期,定义月份值为第一个组1.7.1 其它符号 l为简便起见,你可以使用一些为常见正则表达式创建的快捷符号。如表二所示: 表二:常用符号 1.7.2 其它符号l例如,在前面社会安全号码的例子中,所有出现“0-9”的地方我们都可以使用“d”。修改后的正则表达式如图所示: 图:匹配所有123-12-1234格式的社会安全号码1.8常用符号总结l句点.表示单个字符l方括号表示可能出现字符集里的单个字符l括号()可表示多个

9、字符,还有分组功能l大括号表示次数l转义字符“”l一般正则表达式是由通配符和固定字符组成l”符号称为“否”符号ld D w W s S等快捷符号实战部份l开始java正则表达式的实战讲解部份用正则表达式判断一个字符串是否可以表示数字 regex=“1-90-9*.?0-9*“;class Example_reg1 public static void main(String args) String regex=“1-90-9*.?0-9*“; String str1=“12y345“; String str2=“123.456“; if (str1.matches(regex) System

10、.out.println(str1+“是合法的数字“); else System.out.println(str1+“是非法的数字“); if (str2.matches(regex) System.out.println(str2+“是合法的数字“); else System.out.println(str2+“是非法的数字“); 合法Email地址检测regex=“w1,w1,56w1,“ public class Example5_12 public static void main (String args ) String regex=“w1,w1,.w1,“ ;String str

11、1=““;String str2=““;if(str1.matches(regex) System.out.println(str1+“是一个Email地址“); else System.out.println(str1+“不是一个Email地址“); if(str2.matches(regex) System.out.println(str2+“是一个Email地址“); else System.out.println(str2+“不是一个Email地址“); 应用实例 l日志分析lHTML正文抽取lHTML中的URL抽取实例演示lContentExtraction.java抽取test.htm中的内容实验l利用正则表达式抽取下列文本中的URL地址结果中找帮助 举报高级搜索

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 文学/艺术/历史 > 综合/其它

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