正则表达式相关(引言、基础进阶、工具资料)
引言
正则表达式(regular expression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。
正则表达式可以用来:(1)验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。(2)用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。(3)用来替换,比普通的替换更强大。正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。
节选自:揭开正则表达式的神秘面纱 http://www.regexlab.com/zh/regref.htm
基础进阶
· 普通字符
· 简单的转义字符
· 字符集合
· 自定义字符集合
· 匹配次数修饰
· 特殊符号
------------
· 贪婪与非贪婪
· 反向引用
· 预搜索
节选自:揭开正则表达式的神秘面纱 http://www.regexlab.com/zh/regref.htm
节选自:正则表达式30分钟入门教程 http://deerchao.net/tutorials/regex/regex.htm
字符边界:本身不匹配任何字符,只对字符边界和字符间缝隙附加条件的表达式。
^ 当前位置必须是文本开始位置
$ 当前位置必须是文本结束位置
\b 当前位置的左右两侧,只能有一侧是字母数字或下划线如果正则表达式的匹配模式为 MULTILINE 模式,^ 可匹配一行文本的行首,$ 可匹配一行文本的行末。更多详情,参见正则表达式匹配模式。
当 \b 被包含于字符集合中时,\b 代表退格符(ASCII码 = 8)。
假设你在一篇英文小说里查找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这个单词。
节选自:正则表达式30分钟入门教程 http://deerchao.net/tutorials/regex/regex.htm
工具资料
下载正则表达式文档 chm 版本 http://www.regexlab.com/download/?/deelx/deelx_zh.zip /Files/kiant71/DEELX_正则引擎文档.rar
使用 Regex Match Tracer Web 版 http://www.regexlab.com/zh/mtracerweb.htm
JS 正则引擎测试 http://www.regexlab.com/zh/workshop.asp
JS 正则替换测试 http://www.regexlab.com/zh/replshop.asp
正则表达式30分钟入门教程 http://deerchao.net/tutorials/regex/regex.htm
揭开正则表达式的神秘面纱 http://www.regexlab.com/zh/regref.htm
深入浅出之正则表达式(一) http://dragon.cnblogs.com/archive/2006/05/08/394078.html
深入浅出之正则表达式(二) http://www.cnblogs.com/dragon/archive/2006/05/09/394923.html
笔记:如何写出高效率的正则表达式 http://iregex.org/blog/regex-optimizing.html
常用正则表达式-月光博客 http://www.williamlong.info/archives/433.html