没有合适的资源?快使用搜索试试~ 我知道了~
最通俗易懂的正则表达式教程,适合初学者,能够在1小时内了解正则表达式
资源推荐
资源详情
资源评论
正则表达式 30 分钟入门教程(第二版)
作者:deerchao 来源:unibetter 大学生社区 转载请注明来源 本文第一版
目录
本文目标
如何使用本教程
什么是正则表达式?
入门
测试正则表达式
元字符
字符转义
重复
字符类
反义
替换
分组
后向引用
位置指定
负向位置指定
注释
贪婪与懒惰
平衡组
还有些什么东西没提到
一些我认为你可能已经知道的术语的参考
网上的资源及本文参考文献
第二版更新说明
本文目标
30 分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你
可以在自己的程序或网页里使用它。
如何使用本教程
别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正
则表达式其实并不像你想像中的那么困难。当然,如果你看完了这篇教程之
后发现自己明白了 很多,却又几乎什么都记不得,那也是很正常的——其实
我认为没接触过正则表达式的人在看完这篇教程后能把提到过的语法记住
80%以上的可能性为零。这里只 是让你明白基本道理,以后你还需要多练习,
多查资料,才能熟练掌握正则表达式。
除了作为入门教程之外,本文还试图成为可以在日常工作中使用的正则
表达式语法参考手册(就作者本人的经历来说,这个目标还是完成得不错
的)。
文本格式约定:专业术语 元字符/语法格式 正则表达式 正则表达式中的
一部分(用于分析)
用于在其中搜索的字符串
对正则表达式或其中一部分的说
明
什么是正则表达式?
在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的
字符串的需要。正则表达式就是用于描述这些规则的工具。换句话说,正则
表达式就是记录文本规则的代码。
很可能你使用过 Windows/Dos 下用于文件查找的通配符
(wildcard),也就是*和?。如果你想查找某个目录下的所有的 Word 文档
的话,你会搜索*.doc。在这里,*会被解释成任意的字符串。和通配符类似,
正则表达式也是用来进行文本 匹配 的工具,只不过比起通配符它能更精确地
描述你的需求——当然,代价就是更复杂。比如你可以编写一个正则表达式
来查找所有以
0
开头,后面跟着
2-3
个数字,然后是一个连字号“ -” ,最后是
7
或
8
位数字的字符串 (像 010-12345678 或 0376-7654321)。
正则表达式是用于进行文本匹配的工具,所以本文里多次提到了在字符
串里搜索/查找,这种说法的意思是在给定的字符串中,寻找与给定的正则表
达式相匹配的部分。有可能字符串里有不止一个部分满足给定的正则表达式,
这时每一个这样的部分被称为一个匹配。匹配在本文里可能会有三种意思:
一种是形容词性的,比如说一个字符串匹配一个表达式;一种是动词性的,
比如说在字符串里匹配正则表达式;还有一种是名词性的,就是刚刚说到的
“字符串中满足给定的正则表达式的一部分”。
入门
学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子
进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。
假设你在一篇英文小说里查找 hi,你可以使用正则正则表达式 hi。
这是最简单的正则表达式了,它可以精确匹配这样的字符串:由两个字
符组成,前一个字符是
h, 后一个是
i 。通常,处理正则表达式的工具会提供一
个忽略大小写的选项,如果选中了这个选项,它可以匹配 hi,HI,Hi,hI 这四种
情况中的任意一种。
不幸的是,很多单词里包含 hi 这两个连续的字符,比如
him,history,high 等等。用 hi 来查找的话,这里边的 hi 也会被找出来。如
果要精确地查找
hi
这个单词 的话,我们应该使用\bhi\b。
\b 是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,
metacharacter),代表着单词的开头或结尾,也就是单词的分界处。虽
然通常英文的单词是由空格或标点符号或换行来分隔的,但是\b 并不匹配这
些单词分隔符中的任何一个,它只匹配一个位置。(如果需要更精确的说法,
\b 匹配这样的位置:它的前一个字符和后一个字符不全是\w)
假如你要找的是 hi
后面不远处跟着一个
Lucy ,你应该用\bhi\b.*\
bLucy\b。
这里,.是另一个元字符,匹配除了换行符以外的任意字符。*同样是元
字符,不过它代表的不是字符,也不是位置,而是数量--它指定*前边的内容
可以重复任意次以使整个表达式得到匹配。因此,.*连在一起就意味着任意
数量的不包含换行的字符。现在\bhi\b.*\bLucy\b 的意思就很明显了:先是
一个单词
hi, 然后是任意个任意字符 ( 但不能是换行 ) ,最后是
Lucy
这个单词 。
如果同时使用其它的一些元字符,我们就能构造出功能更强大的正则表
达式。比如下面这个例子:
0\d\d-\d\d\d\d\d\d\d\d 匹配这样的字符串:以
0
开头,然后是两个数
字,然后是一个连字号“ -” ,最后是
8
个数字 (也就是中国的电话号码。当然,
这个例子只能匹配区号为 3 位的情形)。
这里的\d 是一个新的元字符,匹配任意的数字 (0 ,或
1 ,或
2 ,或…
… ) 。-不是元字符,只匹配它本身——连字号。
为了避免那么多烦人的重复,我们也可以这样写这个表达式:0\d{2}-\
d{8}
这里\d 后面的{2}({8})的意思是前面\d 必须连续重复匹配
2
次 (8
次 ) 。
测试正则表达式
如果你不觉得正则表达式很难读写的话,要么你是一个天才,要么,你
不是地球人。正则表达式的语法很令人头疼,即使对经常使用它的人来说也
是如此。由于难于读写,容易出错,所以很有必要创建一种工具来测试正则
表达式。
由于在不同的环境下正则表达式的一些细节是不相同的,本教程介绍的
是 Microsoft .Net 2.0 下正则表达式的行为,所以,我向你介绍一个.Net 下
的工具 Regex Tester。首先你确保已经安装了.Net Framework 2.0,然后
下载
Regex Tester ,下载完后打开压缩包,直接运行 RegexTester.exe。
下面是 Regex Tester 运行时的截图:
剩余15页未读,继续阅读
资源评论
jiexianzhu
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功