有小伙伴反馈正则表达式太难学了,本人通过尝试从全新的8个维度去学习正则表达式,希望对大家有所帮助
更多学习资源点我获取
1. 普通字符
- 普通字符正则表达式直接些,比如 正则是 get,那么匹配就是get,还有一些符号,比如@, %, _ 也是直接写
- 特殊符号,需要转移,特殊符号有 . * \ + [ ] ? { } ( ) ^ $, 需要前面加上 \来转义匹配, 比如匹配get*, 正则写成get*
2. 字符集合
- 单个字符集合是单个关键字得值范围,包含在一对[]中,比如匹配 get 和 got,正则:g[eo]t
- 多个字符集合, 需要写在一对()中, 比如匹配get 和 goat, 正则:g(e|oa)t
- 连续字符集合,使用-等, 比如 [a-d] 表示 [abcd], [a-dz] 表示[abcdz]
- 排除字符,使用^, 比如 [^a-d], 除a, b, c, d以外字符的字符, 如[^@+] 表示除@, +以外的字符, 比如g[^o]t, 表示是g开头, t结尾,且除去got的字符
3. 限定符
- 给前一个字符追加出现次数的范围
-
- 表示出现0次或则多次, 相当于{0, }
-
- 表示出现1次或则多次 相当于{1,}
- ?表示出现0次或则1次 相当于{0, 1}
比如匹配god, good, gooood, 那么正则:go+d
-
- 给限定符追加具体次数,使用{}
- {3} 表示出现3次,
- {3, 6} 表示3-6次
- {3,} 表示3次以上
比如匹配good ,goood, 正则go{2,3}d
- 模糊匹配范围时, 会产生贪婪匹配
- 正则(贪婪) g[a-z]+d, 匹配文本gadxxgod, 那么会整体匹配到最长的gadxxgod
- 正则(非贪婪)g[a-z]+?d, 匹配文本gadxxgod, 那么匹配到gad, god
4. 定位符
- 定位符有
- ^ 表示字符串开端
- $ 表示字符串结尾
- \b 表示单词边界, 字符与空格间的位置
- \B 表示非单词边界
匹配手机号,正则 ^1[0-9]{10}$
5. 子表达式
- 内嵌的子正则表达式,包含在一对()中,可以看成一个整体
比如(got)+ 表示got整体出现1次或则多次 - 使用|分割多个子表达式,比如g(e|oa)t
- 子表达式可以标记子匹配项, 比如匹配形式是AABB形式字符,正则 ([a-z])\1([a-z])\2
6. 省略符
- 省略符是为了简化正则表达式存在的元字符,以\开头
比如 \d+ 等效[0-9]+ - 常用省略符有
- . 等效[^\n\r] 匹配除换行符外的任何单个字符
- \d 等效[0-9]
- \D 等效[^0-9]
- \s 等效[\f\n\r\v] 匹配任何空白字符,包括空格,制表符,换页符等
- \S 等效[^\f\n\r\v]
- \w 等效[A-Za-z0-9]
- \W 等效[^a-za-z0-9]
7. 修饰符
不区分大小写,多行匹配等, 不是正则的一部分,常见的有
- i 不区分大小写
- g 查找所有匹配项
- m 匹配多行
- s 默认. 不匹配\n,加上s后,可以包含\n