文档详情

正则表达式学习笔记.doc

发布:2017-05-13约8.32千字共11页下载文档
文本预览下载声明
定义:正则表达式,就是记录文本规则的代码。类似于Windows/Dos下的通配符,比如说你要查找某个目录下的所有word文档的话,你会搜索*.doc。在此,*被解释为任意的字符串。而正则表达式也是用来进行文本匹配的工具,只不过比通配符更加精确。代价就是更加复杂。 \b 元字符,代表单词的开头或者结尾,也就是单词的分解处。虽然通常英文单词是由空格,标点符号或者换行符来分隔的。但是\b并不匹配这些单词分隔字符中的任意一个,它只匹配一个位置。比如你要查找的单词是hello。我们应该使用\bhello\b。这一点要理解的重点是:只匹配一个位置,而不是一个字符或者其他的。 对于例子1中的,如果你要查找的单词后面不远处跟着一个单词panda。那么你可以用:\bhello.*panda\b。这里.是另外一个元字符,匹配除了换行符以外的任意字符。*同样是元字符,但是它不代表字符,也不是位置,而是数量——它指定*前面的内容可以连续重复出现任意次。那么.*就是表示任意数量的不包括换行的字符。那么\bhello.*panda\b的意思就清楚了。 那么来看一个例子:0\d\d-\d\d\d\d\d\d\d\d 所匹配的字符串就是以0开头,三位数字,然后一个-,接着再是8位数字的字符串,也就是中国的区号为三位的电话号码。这里的-只匹配它本身——连字符。那么\d所代表的就是一位数字(0-9任意一位),也是一个元字符。当然真正的表达式不可能重复这么多的,可以如此写:0\d{2}-\d{8}。{n}表示前面的字符或者字符串连续出现n次。 好了,入门例子先讲这几个,下面找一个工具帮我们测试所写的正则表达式是否正确。 本教程的来源资料参考的是微软 .Net Framework 2.0下正则表达式的行为,一个.Net下的工具Regex Tester。首先你确保已经安装了.Net Framework 2.0,然后下载Regex Tester。这是个绿色软件,下载完后打开压缩包,直接运行RegexTester.exe就可以了。 下面是Regex Tester运行时的截图: RegexBuddy 3。我下载的是破解版本。下面是运行截图: 具体使用教程参考:RegexBuddy工具的使用教程正则表达式里还有更多的元字符,比如\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。\w匹配字母或数字或下划线或汉字等。这两个代码在验证输入的内容时非常有用,比如一个网站如果要求你填写的QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。因为使用了^和$,所以输入的整个字符串都要用来和\d{5,12}来匹配,也就是说整个输入必须是5到12个数字,因此如果输入的QQ号能匹配这个正则表达式的话,那就符合要求了。和忽略大小写的选项类似,有些正则表达式处理工具还有一个处理多行的选项。如果选中了这个选项,^和$的意义就变成了匹配行的开始处和结束处。如果你想查找元字符本身的话,比如你查找.,或者*,就出现了问题:你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\.和\*。当然,要查找\本身,你也得用\\. 例如:deerchao\.net匹配deerchao.net,C:\\Windows匹配C:\Windows。你已经看过了前面的*,+,{2},{5,12}这几个匹配重复的方式了。下面是正则表达式中所有的限定符(指定数量的代码,例如*,{5,12}等): 表2.常用的限定符 代码/语法 说明 * 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次 下面是一些使用重复的例子: Windows\d+匹配Windows后面跟1个或更多数字 ^\w+匹配一行的第一个单词(或整个字符串的第一个单词,具体匹配哪个意思得看选项设置)要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母a,e,i,o,u),应该怎么办? 很简单,你只需要在方括号里列出它们就行了,像[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)。 我们也可以轻松地指定一个字符范围,像[0-9]代表的含意与\d就是完全一致的:一位数字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)。\(?0\d{2}[) -]?\d{8} 。现在来拆解:\(? 匹配为出现一次或0次( 接着是两个数字,然后是)或者- 。再然后是8个数字。不难理解,这是想匹配中国的三位区号的电话号码的两种表现形式:0xx-xxxxxxxx或者(0xx)xxxxxx
显示全部
相似文档