一. 正则表达式
正则表达式是对字符串操作的一种逻辑公式. 一般啊使用正则表达式对字符串进行匹配和过滤.
优点: 灵活, 功能性强, 逻辑性强
缺点: 上手难, 一旦上手, 就会爱上这个东西
正则表达式由普通字符和元字符组成, 普通字符包含大小写字母, 数字, 在匹配普通字符的时候直接写就可以了, 重点在元字符上.
元字符: 元字符是正则表达式的灵魂.
1. 字符组
字符组很简单, 用[] 括起来, 在[]中出现的内容就会被匹配. 如果字符组中的内容过多可以使用-, 比如, [a-z]匹配a-z之间的所有字母, [0-9]匹配所有阿拉伯数字.
2. 简单元字符
基本的元字符, 一大堆, 常用的如下:
. 匹配除换行符以外的任意字符
w 匹配字母或数字或下划线
s 匹配任意空白符
d 匹配数字
匹配一个换行符
匹配一个制表符
匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
W 匹配非字母或数字或下划线
D 匹配非数字
S 匹配非空白符
a|b 匹配字符a或字符b
() 匹配括号内的表达式, 也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
3. 量词
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n, } 重复n次或更多次
{n , m} 重复n到m次
4. 惰性匹配和贪婪匹配
在量词中的*, + , {} 都属于贪婪匹配, 就是尽可能多的匹配到结果
在使用.*后面如果加了?, 则是尽可能的少匹配, 表示惰性匹配
.*?x 的特殊含义是找到下一个x为止
5. 分组
在正则中使用()进行分组
6. 转义
前面加r