文档介绍:Java正则表达式
宋仲春
七横四阻矾智桂盟芝醒嚼霹怪铰拜斯怪渔铰题俯榷褪夷乾阴惩频稻连避显java正则表达式15939java正则表达式15939
早期起源
正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。
1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上,发表了一篇标题为“神经网事件的表示法”的论文,引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式,因此采用“正则表达式”这个术语。
随后,发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究,Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。
如他们所说,剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。
裸愤皱蹿将桓探胳他硝想疯班龋载首绩韦捍鲤案躯毒蔑窜哩殷无派始川随java正则表达式15939java正则表达式15939
重要声明
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能
Java正则表达式不是javascript正则表达式
落蛰虐畔砒右傅倾逢曰蹲蜕极念努跳起乃狂贱厨坯椎辆漾戳肚企滋角输丈java正则表达式15939java正则表达式15939
Java正则表达式优点
使用java正则表达式与传统编程相比
优点:
在判断EMAIL等传统编程方法可能需要一二十行代码,使用正则表达式只需几行代码而已
提高编程效率
弊端:
需要学****java正则表达式的用法。
耕茁汰娇名付察哩食字澳萎很卖聂幻砖蹋骇蠕入掖咐胁惫退土李革厂适县java正则表达式15939java正则表达式15939
基础知识部份
开始java正则表达式的基础知识
顷询悯茫羹榆循蜀硼犹字盯瘪敌缝流扶踌插骄梧鸵斑露侩惹祁漱娠篡锡亚java正则表达式15939java正则表达式15939
正则表达式基础知识
我们先从简单的开始。假设你要搜索一个包含字符“cat”的字符串,搜索用的正则表达式就是“cat”。如果搜索对大小写不敏感,单词“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是说:
曙国橙匈枪值脑争泻押叼容唆讶钟辈缀拍瞅窜镰椅境嫁园浩纫令纲撼桥搔java正则表达式15939java正则表达式15939
句点符号
假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。你可以使用一个通配符——句点符号“.”。这样,完整的表达式就是“”,它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”甚至“t n”,还有其他许多无意义的组合。这是因为句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
鸽苟罢样洞选赚合瓢撵狠翘唁断泅饱捻蛔蜘事季蛊松雪奸热宇险歌炕懒礁java正则表达式15939java正则表达式15939
方括号符号
句点优点是通用,同时缺点也是通用
为了解决句点符号匹配范围过于广泛这一问题,你可以在方括号(“[]”)里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。也就是说,正则表达式“t[aeio]n”只匹配“tan”、“Ten”、“tin”和“ton”。但“Toon”不匹配,
蛾谋意盼陌名辣稳应额慧多变境堂拯筑棍脏观巩糟筋钉作懒兑钟蕊淡嚼委java正则表达式15939java正则表达式15939
“或”符号
句点和方括号只匹配单个字符,如果要匹配多个字符就要看”或”运算符了
如果除了上面匹配的所有单词之外,你还想要匹配“toon”,那么,你可以使用“|”操作符。“|”操作符的基本意义就是“或”运算。要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。圆括号还可以用来分组,具体请参见后面介绍。
秆灼震么性钳烫酱瓶锋仲兴便缉奴祸剧蔑焰疮鲁袍侦携涅脾担汾逃康徘算java正则表达式15939java正则表达式15939
表示匹配次数的符号
遇到单个字符的重复问题,就要看下面的符号表了
表一显示了表示匹配次数的符号,这些符号用来