re.match方法:尝试从字符串的起始位置匹配一个规则,匹配成功就返回match对象,否则返回None。可以使用group()获取匹配成功的字符串
语法:re.match(pattern,string,flags=0)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位,用于控制正则表达式的匹配方式 re.I 匹配对大小写不敏感 re.M 多行匹配 re.S 使.匹配包括换行在内所有字符
group(num)可以获取匹配的数据 如果有多个匹配结果的话,则会以元组的形式存放到group对象中,此时我们可以通过下标去获取
常用的匹配规则-匹配字符
符号 匹配规则
.(点) 匹配任意1个字符除了换行符\n
[abc] 匹配abc中的任意一个字符 可以使用范围如[a-z] [^0-9] ^取反
\d 匹配一个数字,即0-9
\D 匹配非数字
\s 匹配空白,即空格,tab键
\S 匹配非空白,除空格,tab键之类的
\w 匹配单词字符,即a-z,A-Z,0-9,…
\W 匹配非单词字符
常用的匹配规则-匹配字符数量
符号 匹配规则
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有一次
\? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{n,m} 匹配前一个字符出现n到m次 {min,max}前导字符min次到max次
常用的匹配规则-原生字符串:在正则前面加r 表示原生的字符串,python字符串就不再转义
python字符串中\作为转义字符开头,比如\n表示换行,\t表示tab键
而为了表示\本身,再加一个\,形成\形式
常用的匹配规则-匹配开头结尾
符号 匹配规则
^ 匹配字符串开头 其中^有两种含义:1.以x开头 2.否定 取反
$ 匹配字符串结尾
常用的匹配规则-分组匹配
符号 匹配规则
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组 可用res.group(num)调用指定分组
\num 引用分组num匹配到的字符串
(?p) 分组起别名 (?p<名字>)
(?p=name) 引用别名为name分组匹配到的字符串
re.compile方法
compile将正则表达式模式编译成一个正则表达式对象
reg=re.compile(pattern),
result=reg.match(string) 其中match可换为search,findall等其它函数
等效于result=re.match(pattern,string)
使用re.compile()和保存所产生的正则表达式对象重用效率更高
re.search方法
search在全文中匹配一次,匹配到就返回
语法:re.search(pattern,string,flags=0)
pattern:匹配的正则表达式
string:要匹配的字符串
flags:标志位
re.findall方法
findall匹配所有返回一个列表,这个方法使用频率较高
语法:findall(string[ ,pos[ ,endpos]])
string:待匹配的字符串
pos:可选参数,指定字符串的起始位置,默认为0
endpos:可选参数,指定字符串的结束位置,默认为字符串的长度
re.sub方法
sub将匹配到的数据进行替换
语法:sub(pattern,repl,string,count=0,flags=0)
pattern:正则中的模式字符串
repl:替换的字符串,也可为一个函数
string:要被查找替换的原始字符串
count:模式匹配后替换的最大次数,默认0表示替换所有的匹配
flags:标志位
re.subn方法:同时返回替换次数
文件目录操作命令
re.split方法
split根据匹配进行切割字符串,并返回一个列表
语法:split(pattern,string,maxsplit=0,flags=0)
pattern:匹配的正则表达式
string:要匹配的字符串
maxsplit:分割次数,默认为0,不限制次数
flags:标志位
贪婪模式与非贪婪模式
python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符,非贪婪则相反,总是尝试匹配尽可能少的字符
在* ? + {m,n} 后面加上? 使贪婪变成非贪婪