小白版理解使用正则表达式的一种方式

"Hello World, Hello Blog"

Posted by wudimingwo on December 15, 2018

一。正则表达式当中存在两个维度, 1.位维度 2.组维度

1.位维度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
位维度
位里面的规则,
一个[]表示一位。
里面可以表示一个区间,
[azj]表示 a或 z或 j
[0-9][A-z] 表示从0到9 从A到z 是以ask编码排序的。
[\w] 元字符表示[0-9A-z][\W]表示取余。(其他元字符可以百度。)
[^a]表示取余
有个细节
[^a^b]表示的是什么?这不是表示    ^a或者^b 而是    ^a且^b
[(^a)(^b)]这个表示的才是    ^a或者^b

其实位维度的规则还是比较简单的,只要不与组维度的规则想混就好。
[a] 可以把 []省略 写成 a

重点是, a 这种形式是特殊形态,  [a] 这种形式才是一般形态。

2.组维度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
为什么无中生有一个 组的概念?
abc当中存在几个组?
a,b,c,ab,bc,abc,三个组。
像
 ^ 以什么为开头,
$ 以什么为结尾
* 0个或者多个
+ 1个或者多个
? 0个或者1个
{n,m} 最少n个,最多m个
这些个规则,他的适用单位其实是组。
^(a)
(b)$
(c)*
(ab)+
(bc)?
(abc){5,9}

^(a) 时,可以省略() 写成 ^a
重点是,^a 这种方式是特殊形态,^(a)这种形态才是一般形态。
脑子首先要想到的是一般形态而不是 特殊形态。