整理下正则表达式的基础理论部分,分享下,欢迎纠正。
1元字符:
匹配位置:
^ 脱字符号,匹配行的开始。^String被匹配的行的第一个字符串是String。
$ 美元符号,匹配行的结尾。String&以String结尾的行。
/b 匹配单词的开始和结尾,不匹配空格符号,标点符号或换行符号分隔。/bstr以str开头的字符串,且str之前是单词的分界处。
^string$只包含string
^$不包含任何字符串
匹配字符:
.(点号)匹配除换行符的任意字符。2007.06.22匹配除了换行符之外的任何字符串“2007”“06”“22”的字符串。如:2007/06/22也可匹配。
/w匹配单词字符(包括字母,数字,下划线和汉字)/ba/w/w/w/w/w/w/w/b表示以字母“a”开头的长度等于8的任意单词。
/W匹配除了单词字符以外的任意字符。
/s匹配任意的空白字符,如空格,制表符,换行符等。
/S匹配任意的非空白字符
/d匹配任意的数字
/D匹配任意的非数字字符
字符类:
[字母表]匹配字符集中的任何字符。[012354] <H[123456] >表示为<H1><H2><H3>…..
[Jj]ack表示Jack或jack
[^字母表]匹配除了字符集合中的任何字符。a[^b]表达匹配字符a之后不是字符串b的字符串。
/p{name}指定的命名字符中的任何字符。
/P{name}匹配除指定的命名字符中的任何字符。
字符转义:
/.匹配字符“.”。
/*匹配字符*
//匹配字符/.www/.my/.com表示www.my.com
/a响铃
/t制表符
/r回车符
/v垂直制表符
/f换页符
/n换行符
/e 回退符(ESC)
/040将ASCII字符匹配为八进制数(最多三位)
/x20使用十六进制表示形式与ASII字符匹配
/CcASCII 控制字符,如Ctrl_C
/u0020 使用十六进制数表示形式(恰好四位)与Unicode字符匹配
反义:
/B匹配不是单词开头和结束的任何字符。
<asp[^>]>表示匹配被尖括号括起来的,以字符串“asp”开头的,之后字符不能为字符“>”。
限定符:
贪婪匹配:
{n}重复n次/d{3}等同于/d/d/d
{n,m}重复至少n次,最多m次/d{3,4}三位或四位的整数
*重复至少0次,等同于{0,}
+重复至少1次,等同于{1,}
?重复0次或1次,等同于{0,1}。Colou?r表示匹配“Color”或“Colour”。u?表示u可以出现一次或不出现。
懒惰匹配:
*?尽可能少的使用重复的第一个匹配。a.*b匹配以字母a开头的,以字母b结束的最长的字符串。aabab=aabab. a.*?b匹配以字母a开头的以字母b结束的最短字符串。aabab=aab ab
+?尽可能少的使用重复但至少使用一次。a.+b匹配以字母a开头的,以字母b结束的长度至少为3的字符串。avbab=avbab 。a.+?b 长度至多为3。avbab=avb
?? 使用0次重复(如有可能)或一次重复
{n}?等同于{n}
{n,}?尽可能少的重复单至少使用n次。a.{1,}b avbab=avbab a.{1,}?b avbab=avb
{n,m}? 介于n次与m次之间,尽可能少的使用重复。