正则表达式
概念及特点
1.概念:记录文本规则的代码
2.特点:语法令人头疼,可读性差; 通用性强,适用于很多编程语言
3.正则表达式是匹配或查找符合某些规则的字符串数据
re模块
导入模块:import re
re.match()根据正则表达式从头开始匹配字符串数据
re模块高级用法
search : 根据正则表达式查找数据(只查找一次)
findall :使用findall进行查找多个字符
sub : 替换数据(re.sub 正则, 替换后内容/ 函数, 要匹配字符串, count= 指定替换次数(count:默认是0,表示正则表达式全部替换))
split : 根据多个标识符进行分割数据, 并返回一个列表 (re.split 正则, 要匹配字符串, maxsplit = 1(1. 表示只分割一次,2. maxsplit:0 根据正则表达式全部分割))
正则表达式的匹配用法
匹配单个字符
. :匹配任意一个字符(除了\n)
[] :匹配[]中列举的字符(只能匹配[]内的其中一个字符)
\d :匹配0-9内的任意数据(匹配0-9其中的一个数字)
\D : 匹配非数字
\s : 匹配空白符,即tab,空格键
\S : 匹配非空白
\w : 匹配非特殊字符,即a-z, A-Z, 0-9, _ , 汉字
\W : 匹配特殊字符, 即非字母, 非数字, 非汉字
匹配多字符
* : 匹配前一个字符出现0次或无限次, 即可有可无
+ : 匹配前一个字符出现1次或者无限次, 即至少有1次
?:匹配前一个字符出现1次或者0次, 即要么1次, 要么没有
{m} :匹配前一个字符出现m次
{m,n} : 匹配前一个字符出现从m到n次
匹配开头结尾
^ : 匹配字符串开头
[^指定字符]:表示除了指定字符都匹配
$ : 匹配字符串结尾
匹配分组
| :匹配左右任意一个表达式
(ab) :括号内字符为一个分组
\num :引用分组num分配到的字符串
(?P) : 分组起名字
(?P=name ):引用名字为name分组匹配到的字符串
分组数据是从左到右进行分配的
贪婪和非贪婪
贪婪
python中数量词默认是贪婪的,总是尝试匹配尽可能多的字符
在正则表达式范围代码后面加上?号, 可以使贪婪变成非贪婪;例如:+?, *?, ??
非贪婪
尝试匹配尽可能少的字符
含义:?后面的数据不让前面的正则表达式代码进行匹配, 留给?后面的正则表达式代码进行匹配
r的作用
python中字符串前面加上r表示原生字符串, 数据里面的反斜杠不需要进行转义, 针对的只是反斜杠 例如:ret = re.match(r"c:\a",mm).group()
建议:如果使用正则表达式匹配数据都可以加r,要注意r针对的只是反斜杠起作用,不需要对其进行转义
正则表达式
最新推荐文章于 2024-05-20 10:35:51 发布