正则表达式基础总结

正则表达式:匹配或查找符合某些规则的字符串数据,通用性强,适用于很多编程语言

要用正则表达式,需导入re模块,re.match(正则,要匹配的字符串)根据正则表达式从头开始匹配字符串数据,match方法进行匹配,group方法来提取匹配到的数据,正则前加r

单字符匹配

. 匹配任意一个字符(除了\n)

[ ]匹配[]中列举的字符

\d 数字0~9

\D 非数字

\s 匹配空白:空格,tab键

\S 非空白

\w 非特殊字符,即a~z,A~Z,0~9,_,汉字

\W  特殊字符 非字母,非数字,非汉字

匹配多个字符的格式

*匹配前一个字符0次或无限次,可有可无

+ 一次或无限次

?一次或0次

{m} 前一个字符出现m次

{m,n}  前一个字符出现m到n次

匹配开头和结尾的正则表达式:

^ 匹配字符串开头 (“^\d.*\d&”,”3s2”)匹配以数字开头以数字结尾,中间不限

$ 匹配字符串结尾

[^指定字符]除指定字符外都匹配  (”[^abc]”,”d”)

匹配分组

| 匹配左右任意一个表达式

(ab) 将括号中字符作为一个分组

\num 引用第num个分组匹配到字符串

(?P) 分组起别名,可以将前面用到的匹配规则起名,然后后面直接用

(?P=name) 引用别名为name分组匹配到的字符串

re模块的高级用法:

re.search(pattern,str) 根据正则表达式查找数据,只查找一次

re.findall(pattern,str)查找出全部匹配项

re.sub(pattern,reply,str,count=1) 将匹配到的数据进行替换,count为替换次数,默认为全部替换

re.split(pattern,str, maxsplit=1)根据匹配进行切割字符串,并返回一个列表,maxsplit为分割次数,默认全部分割

Python贪婪和非贪婪

Python里的数量词默认是贪婪的,总是尝试匹配尽可能多的字符;

非贪婪:匹配尽可能少的字符

贪婪转为非贪婪:在* , ? + {m,n}后加上?

Python中正则表达式匹配数据时字符串前面加上r表示原生字符串,数据里面的反斜杠不需要手动进行转义,r只针对反斜杠起作用,re.match(r”c:\\a”,”c:\\a\\b")

你可能感兴趣的:(正则表达式基础总结)