正则表达式学习笔记(待续)

今天在网上闲逛,偶然间找到一个很不错的关于正则表达式的教程~~《正则表达式30分钟入门教程》
http://deerchao.net/tutorials/regex/regex.htm

顺便介绍一个很好用的正则表达式辅助工具:

点此查看详情

以下是我的正则表达式笔记:

正则表达式

b 代表单词开头或结尾 例如:bhib 仅仅匹配hi 不匹配 him shi

b不代表任何字符,仅仅表示一个位置。

^匹配字符串的开头(在多行模式下为匹配一行之开头)

$匹配字符串的结尾(在多行模式下为匹配一行之结尾)

如果需要更精确的说法,b匹配这样的位置:它的前一个字符和后一个字符不全是(一个是,一个不是 或不存在)   ---不明白

.代表除换行符外的任意字符

*不代表字符,不代表位置,仅代表数量,任意数量

.*任意数量的不包含换行符的字符(包含0次)

+重复一次或更多次(不包含1次)

?重复0次或1次

d代表数字,例如0dd-dddddddd 代表开头一个零,后跟两位数字,之后一个横杠,再后面是八位数字。

上面的例子还可以缩写成0d{2}-d{8} 大括号中的数字代表重复次数。

{5}重复5次

{5,12}代表重复不少于5次,不多于12次。例如^d{5,12}$

{5,}代表重复不少于5次

s匹配任意空白字符,如空格,制表符,换行符,全角空格。

w匹配字母,数字,下划线或汉字等。

[ ]自定义某一范围,例如[aeiou]匹配任何一个英文原音字母,[0-9]匹配一位数字,[a-z0-9A-Z]匹配一个数字或一个字母(仅考虑英文的话等同于w)。

-这个符号(减号)如果放在[]里面指定范围,一定要放在开头,不然会出错。

一个例子  (?0d{2}[) -]?d{8} 解析:首先是一个转义字符(,它能出现0次或1次(?), 然后是一个0,后面跟着2个数字(d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(d{8}) 他可以匹配这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。当然也可以匹配010)12345678或(022-87654321这样的“不正确”的格式。

字符转义,如果要查找元字符本身,需要加转义字符,如.  * 

| 分支条件,可以理解为“或”的关系,但要注意条件顺序,按照从左到右的顺序逐个匹配,如匹配则忽略掉后面的条件,如:d{5}|d{5}-?d{4}则只会匹配前5位。

()分组,之前只能重复单个字符,使用分组后,可以重复自定义的一段字符串,例如:

((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)

(这个验证IP的正则很巧妙~~改一点都会出错,比如我曾尝试将最后的dd合并~~就出错了)


发表评论

(必填)

(必填)

(以便回访)