文档介绍:1 1 1 1 、、 Regular Expressions Regular Expressions (正则表达式) (正则表达式) 的概念的概念★★正则表达式是一种功能强大而又不失正则表达式是一种功能强大而又不失灵活的灵活的文本处理工具文本处理工具正则表达式基础知识正则表达式基础知识 2 2 ★★使用正则表达式,我们就能够以编程的使用正则表达式,我们就能够以编程的方式,构造复杂的方式,构造复杂的文本模式文本模式,并利用它,并利用它对输入的字符串进行对输入的字符串进行匹配匹配◆◆一旦找到了匹配这些模式的部分,你就一旦找到了匹配这些模式的部分,你就可以随心所欲对它们进行各种处理可以随心所欲对它们进行各种处理 3 3 1 1 、我们先从最简单的开始、我们先从最简单的开始★★假设你要搜索一个包含字符假设你要搜索一个包含字符““ cat cat ””的字符串,搜索的字符串,搜索用的正则表达式就是用的正则表达式就是““cat ca t ””本身本身◆◆搜索对大小写敏感,单词搜索对大小写敏感,单词““catalog cata log ””、、““ catherine catherine ””、、““ sophisticated sophisticated ””都可以匹配都可以匹配 4 4 2 2 、句点符号、句点符号⑴⑴假设你在玩英文拼字游戏,想要找出三个字母的假设你在玩英文拼字游戏,想要找出三个字母的单词,而且这些单词必须以单词,而且这些单词必须以““ t t ””字母开头,以字母开头,以““ n n ””字母结束字母结束★★另外,假设手上有一本英文字典,而你正是用另外,假设手上有一本英文字典,而你正是用正则表达式来搜索该字典的全部内容正则表达式来搜索该字典的全部内容 5 5 ★★要构造这个正则表达式,你可以使用一个要构造这个正则表达式,你可以使用一个通配符通配符句点符号句点符号““. . ””,即完整的正则表达式为,即完整的正则表达式为““ ””◆◆它除了匹配它除了匹配““ tan tan ””、、““ ten ten ””、、““ tin tin ””和和““ ton ton ””,还可以,还可以匹配匹配““ t#n t#n ””、、““ tpn tpn ””甚至甚至““ t n t n ””等等等等⑵⑵归纳: 归纳: 句点符号匹配所有字符句点符号匹配所有字符,包括空格、,包括空格、 Tab Tab 字符甚至换行符字符甚至换行符 6 6 3 3 、方括号符号、方括号符号★★为了解决句点符号匹配范围过于广泛这一问题, 为了解决句点符号匹配范围过于广泛这一问题, 你可在方括号你可在方括号““[ ] [ ] ””里面指定看来有意义的字符里面指定看来有意义的字符此时, 此时, 只有方括号里面指定的字符才参与匹配只有方括号里面指定的字符才参与匹配◆◆例如:正则表达式例如:正则表达式““ t[aeio]n t[aeio]n ””只能匹配只能匹配““ tan tan ””、、““ ten ten ””、、““ tin tin ””和和““ ton ton ””,但是,但是““ t#n t#n ””、、““ tpn tpn ””、、““ t n t n ””以及以及““ toon toon ””都不能匹配都不能匹配 7 7 4 4 、或符号、或符号★★除了上面能够匹配的所有单词之外,如果你还想除了上面能够匹配的所有单词之外,如果你还想要匹配要匹配““ toon toon ””,那么,你可以使用或,那么,你可以使用或““| | ””操作符操作符◆◆““| | ””操作符的基本意义就是操作符的基本意义就是或运算或运算◆◆典例:如果要匹配典例:如果要匹配““ toon toon ””,使用,使用““ t t ( ( a|e|i|o|oo a|e|i|o|oo ) ) n n ””正则表达式正则表达式 8 8 ★★注意: 注意: ⑴⑴这里这里不能使用方扩号不能使用方扩号,因为,因为方括号只允许匹配单方括号只允许匹配单个字符个字符( ( a|b|d a|b|d ) ) 等价等价[ [ abd abd ] ] ⑵⑵这里这里必须使用圆括号必须使用圆括号() () ⑶⑶圆括号还可以用来分组,具体请参见后面介绍圆括号还可以用来分组,具体请参见后面介绍 9 9 5 5 、表示匹配次数的符号、表示匹配次数的符号★★下表显示了表示匹配次数的符号,这些符号用来下表显示了表示匹配次数的符号,这些符号用来确定确定紧靠紧靠该符号左边的符号出现的次数该符号左边的符号出现的次数 10 10 ⑴⑴假设我们要在文件中搜索美国的社会安全号码假设我们要在文件中搜索美国的社会安全号码这个号码的格式是这个号码的格式是 999 999 - - 99 99 - - 9999 9999