正则表达式
Posted keatkeat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
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.
如果我们想匹配一个单词. 比如 hi, 那么我们一定不希望它匹配到 his, hit 等等
那么我们可以加上 hi 这样就 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 也是经常的用法
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章