1、正则表达式模式:
(1)单个字符
- \\ : 表示转义字符'\'
- \t : 匹配制表符
- \n:匹配换行符
- \r:匹配回车符
(2)字符集
- [a,b,c]:其中的任意一位。
- [^a,b,c]:表示不是其中的任意一位。
- [a-z]:所有的小写字母。
- [a-zA-Z]:表示任意的一位字母,不区分大小写。
- [0-9]:表示任意的一位数字。
(3)字符集等价表达式:
- . :表示任意的一位字符。
- \d:等价于[0-9],属于简化写法。
- \D:等价于[^0-9],属于简化写法。
- \s:表示任意的空白字符,例如\t,\n。
- \S:表示任意的非空白字符。
- \w:等价于[a-zA-Z_0-9],表示任意的字母,数字,下划线所组成。
- \W:等价于[^a-zA-Z_0-9],表示不是由任意的字母,数字,下划线所组成。
(4)边界匹配
- ^ : 正则匹配的开始
- $:正则匹配的结束
\b,\B是单词边界,不匹配任何实际字符,所以是看不到的;\B是\b的非(补)。
\b:表示字母数字与非字母数字的边界, 非字母数字与字母数字的边界。
\B:表示字母数字与(非非)字母数字的边界,非字母数字与非字母数字的边界。
(5)正则出现数量
- 正则?:表示此正则可以出现0次或者1次。
- 正则+:表示此正则可以出现1此或者多次。
- 正则*:表示此正则可以出现0次或者1次或者多次。
- 正则{n}:表示此正则正好出现n次。
- 正则{n,}:表示此正则至少出现n次。
- 正则{n,m}:表示此正则出现n~m次。
(6)正则逻辑运算
- 正则1正则2:正则1判断后继续判断正则2。
- 正则1 | 正则2:正则1或者正则2有一组满足即可。
- (正则):将多个正则作为一组,可以为这一组设置单独出现的次数。
2、python中的正则表达式
python中的re模块拥有全部的正则表达式功能,可以更加方便的对字符串进行操作。
- re.compile(pattern[, flags]) 编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
参数:
pattern : 一个字符串形式的正则表达式
flags : 用于控制正则表达式的匹配方式,一个可选参数,比如忽略大小写,多行模式等,具体参数为:
- re.match(pattern,string,flags=0) 从字符串的起始位置匹配一个模式,如果不是从起始位置匹配成功的话,返回none。
参数:
pattern :匹配的正则表达式;
string :需要匹配的字符串;
flags : 用于控制正则表达式的匹配方式。
使用group(num=0)和groups():匹配对象函数来获取匹配表达式。
group(num=0):匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups(): 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号
- re.serach(pattern,string,flags=0):扫描整个字符串并返回第一个成功匹配的字符串。
参数:
pattern :匹配的正则表达式;
string :需要匹配的字符串;
flags : 用于控制正则表达式的匹配方式。
同样,也可以使用group(num=0)和groups():匹配对象函数来获取匹配表达式。
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
- re.sub(pattern, repl, string, count=0, flags=0) 替换字符串中的匹配项
参数:
pattern : 正则中的模式字符串。
repl : 替换的字符串,也可为一个函数。
string : 要被查找替换的原始字符串。
count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
flags : 用于控制正则表达式的匹配方式。
- findall(string[, pos[, endpos]]) 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表
参数:
string : 待匹配的字符串。
pos : 可选参数,指定字符串的起始位置,默认为 0。
endpos : 可选参数,指定字符串的结束位置,默认为字符串的长度
- re.finditer(pattern, string, flags=0):匹配子串并作为迭代器返回
参数:
pattern :匹配的正则表达式;
string :需要匹配的字符串;
flags : 用于控制正则表达式的匹配方式。
- re.split(pattern, string[, maxsplit=0, flags=0]) 按照能够匹配的子串将字符串分割后返回列表
参数:
pattern :匹配的正则表达式;
string :需要匹配的字符串;
maxsplit:可选参数,分隔次数,maxsplit=1 分隔一次,默认为 0,不限制次数。
flags:可选参数,用于控制正则表达式的匹配方式。
3、正则表达式匹配标志-用来控制匹配的模式
re.I: 忽略大小写
re.L: 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M: 多行模式,可影响到^和$
re.S:即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
re.U: 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
re.X: 为了增加可读性,忽略空格和 # 后面的注释
4、正则表达式对象:
re.RegexObject
re.compile(): 返回 RegexObject 对象。
re.MatchObject
group() 返回被 RE 匹配的字符串。
start() 返回匹配开始的位置
end() 返回匹配结束的位置
span() 返回一个元组包含匹配 (开始,结束) 的位置