1.regex是区分字母大小写的,但是绝大多数正则表达式也实现子不区分字母大小写的操作;
2.regex匹配的不是整个字符串,只是与某个模式相匹配的字符,即使他们只是整个字符串的一部分;
3. .字符可匹配任何单个的字符/字母数字甚至是.自身;同一个正则里可以使用多个.字符,既可以连续出现,可以间隔出现;
4. 转义字符 .表示匹配.字符;\表示匹配字符;
5.[ns]表示在相应的位置匹配n或者s;
6.-表示字符区间;如[A-Z]表示匹配A到Z的所有大写字母;[a-z]表示匹配a到z的所有小写字母;[0-9]
表示匹配0到9的所有数字;注意避免尾字符小于首字符的情况(如[3-1]),这种模式没有意义;
7.-字符只在[]中有意义,其它地方只能匹配它本身;
8.[A-Za-z0-9]表示匹配所有的字母与数字;
9.#[0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]:匹配十六进制颜色值(RGB);
10.^取非匹配.^的效果作用于给定字符集里的所有字符或字符区间,而不是该字符后面的那一个字符或字符区间;
11.元字符包括. [ ] * ? { }
12.空白元字符:f:换页;
:换行;
:回车; :制表符;v:垂直制表符;
13.
:匹配文本行的结束标签(windows);
:匹配文本行的结束标签(linux/unix);
:匹配空白行;
14.类元字符:d:匹配任何一个数字字符,等价于[0-9];
D:匹配一个非数字字符(等价于[^0-9]);
w:匹配任何一个字母(包含大小写)/数字/下划线(等价于[a-zA-Z0-9_]);
W:匹配任何一个非字母/数字/下划线字符(等价于[^a-zA-Z0-9]);
s:匹配任何一个空白字符(不包含匹配退格字符的[]),等价于[f
v];
S:匹配任何一个非空白字符,等价于[^f
v];
15.[w.]+:匹配字符集合(字母/数字/下划线和.)的一次或多次出现.字符集合里的元字符不需要被转义;
16.*:"在我前面的字符或字符集合是可选的有没有都可以"
17.?:只能匹配个字符或字符集合的零次或一次出现,最多不超过一次;
18.匹配URL地址的:https?://[w./];
19.{}:设定匹配次数的值;如rgb的匹配可以写为#[
0-9a-fA-F]{6};{2,4}:表示最少重复2次,最多重复4次,重复次数可以为0;?等价于{0,1};{3,}表示重复3次或更多;
20.贪婪型元字符:* + {n,}
懒惰型元字符:贪婪型元字符后加上?即可;
21.边界限定符:使用一些特殊的元字符来表明我们想让匹配操作在什么位置发生;
22.:匹配一个单词的开始或结尾(
其实匹配的位置是:这个位置位于一个能够用来构成单词的字符和一个不能用来构成单词的字符之间);如cat:匹配单词cat;
23.B-B:匹配一个前后都不是单词边界的连字符
24.用来定义字符串边界的元字符有两个:^用来定义字符串开头;$用来定义字符串结尾;
25.^只有与[连用时,且必须在[的右边才有"求非"的作用;
26.^s*:匹配一个字符串的开头位置和随后的零个或多个空白字符.
27.s*$:匹配珍上字符串结尾处的零个或多个空白字符;
28:(?m):启用分行模式,把换行符视为一个字符串分隔符;如:(?m)^s*//.*$:匹配每一行中//开头的字符;
29.子表达式需用()包起来,作为组捕获;
30.1:回溯引用第1个子表达式的内容.如[ ]+(w+)[ ]+1:回滚的是子表达式(w+)的内容; 可以用来代表整个正则表达式;
31..+(:):查找到并且匹配结果包含:;
.+(?=:)查找到但匹配结果不包含:
32.任何一个子表达式都可以转换为一个向前查找表达式,只要给它加一个?=前缀即可.?=被称为向前查找字符(查找出现在被匹配文本之后的字符,但不消费那个字符);
33.?<= 向后查找字符,查找被匹配文本之前的字符,但不消费那个字符.
34.向前查找模式的长主是可变的,它们可以包含.和+之类的元字符,所以非常灵活.向后查找模式只能是固定长度.
35.负向前查找与负向后查找需要用!代替=.
(?=)--正向前查找;(?!)--负向前查找;(?<=)--正向后查找;(?<!)--负向后查找