1.什么是正则表达式?
正则表达式是用一段特殊规则写成的字符串匹配另一段符合该规则字符串。
2.分类
(1)基本匹配,如:"abc","cat"
(2)元字符
- .点字符。匹配任意单个字符除了换行符。
- []方括号字符。匹配方括号中的任意字符。
- [^ ] 否定字符集匹配除方括号里的任意字符。
- * 匹配>=0个重复的在*号之前的字符。
- + 匹配>+1个重复的在+号之前的字符。
- ? 标记?之前的字符为可选.
- {n,m} 匹配>=n&&<=m个重复的在*号之前的字符。
- (xyz) 匹配和xyz相等的字符串
- | 或运算符
- \ 转义字符,用于转义正则表达式包含的特殊字符
- ^ 从开始行进行匹配,锚点
- $ 从结束行进行匹配,锚点
3.简写字符集
用于对常用字符集或一类常用字符集进行简写。
- . 点字符,匹配除换行符外的所有单个字符
- \w 匹配所有的字母数字,包含大小写,等同于 [a-zA-Z0-9_]
- \W 匹配所有非字母数字
- \d匹配数字,等同于[0-9]
- \D 匹配非数字
- \s 匹配所有空格字符
- \S 匹配所有非空格字符
- \f 匹配一个换页符
- \n 匹配一个换行符
- \r 匹配一个回车符
- \t 匹配一个制表符
- \v 匹配一个垂直制表符
- \p 匹配一个Dos换行符
4. 零宽度断言
零宽度,就是说断言字符距离为0,也就是前后断言
- ?= 正先行断言,存在
- ?! 负先行断言,排除
- ?<= 正后发断言,存在
- ?<! 负后发断言,排除
5. 标志
i 忽略大小写
g 全局匹配
m 多行修饰符:锚点元字符 ^
$
工作范围在每行的起始。
6. 贪婪匹配与惰性匹配
贪婪匹配:匹配进行能长的字符串
惰性匹配:匹配尽可能短的字符串,通过?可以将贪婪匹配转换为惰性匹配
---------------------练习正则表达式,推荐网站 https://github.com/ziishaned/learn-regex