正则表达式

refer: 

https://deerchao.cn/tutorials/regex/regex.htm

https://www.regextester.com/97209 在线测试

https://github.com/ziishaned/learn-regex/blob/master/translations/README-cn.md

一直以来都逃避正则,但写代码不会一点正则有时候真的很痛苦,所以还是得学一下最基本的. 这里做一下笔记呗.

1. \b

如果我们想匹配一个单词. 比如 hi, 那么我们一定不希望它匹配到 his, hit 等等 

那么我们可以加上 \bhi\b 这样就 ok 了. 它的逻辑是匹配的字前后不可以是字母或数字 (符号, 空格都是 ok 的)

2. .     

点匹配万物, 除了换行

3. \d  

匹配数字, 小数点不匹配哦,不要傻傻的

4. \w

匹配字母,数字, 汉字和下划线, 不要问我为什么跑出一个下划线来...

如果不希望下划线,也可以用另一个写法 [a-zA-Z0-9] 但这个不匹配汉字

5. \s

匹配空格和 tab

6 ^ 和 $

通常会一起用, ^ 是表示匹配第一个字符串开始. 比如 ^a 就是说第一个字一定要是 a 

如果只是 a 那么意思是字符串里头只要有 a 就可以了, ^ 就只能是开头就要 a 

$ 就是结尾. 

所以我们验证一整个字符串通常就会用到这个了

上面讲了匹配,接下来讲一下要求匹配的数量

1. *

0次或多次, 比如 aaa 如果我只是写 a 那么会有 3 给 match (每一个 match 里面一个字)

而我写 a* 就只有一个 match 里面有 3 个字

2. +

1次或多次. 和 * 一样, 唯一区别是 * 可以 0 次,这个最少一次

3. ?

0次或1次, 就是有或没有. 重点不是数量了, 所以它是没有多次概念的

4. {n} n 就是任你写一个数字. 要配个几个就几个

5. {n,} n 个以上, 反过来是没有的哦 {,n} 《--这个是错误的

6. {n,m} inclusive between n and m 

再来说一下其它热门的

1. 方括号[]: 方括号是单个匹配,如[abc]他限制的不是abc连续出现,而是只能是其中一个,这样写那么规则就是找到这个位置时只能是a或是b或是c; 
方括号是正则表达式中最常用的,常用的用法有:[a-zA-Z0-9]匹配所有英文字母和数字,[^a-zA-Z0-9]匹配所有非英文字母和数字。

这段抄来的. 我还没悟道, 之后再写.

里面不是连环的,而是类似单个 or , 比如 [aeiou] 匹配的不是连续而是 a 或 e 或 i 或 o 或 u.

另一个特点是 [.] 匹配的是 . 而不是任意字符, 但是 [\s] 依然是匹配空格. 所以不能理解为里面没有元字符. 再研究

2. | 

或者 \d{3} | abc 就是说 3 个数字或者匹配 abc 字符串

3. 反义 not 

\S  \s 以外

\W \w 以外, 

\D \d 以外

[^aeiou] 加上 ^ 表示以外

[^a-zA-Z0-9_\s] 可以算是匹配符号

4. (\d) 圆括弧是把表达式抱起来用,和数学有点像. 

然后就是这样写 (ab){2}  ab出现 2次, 如果是 ab{2} 那么只是 b 出现 2 次.

(ab|cd) 配合 or 也是经常的用法

相关推荐