正则
python之re---正则表达式
re就是从字符串中获取想要的内容
re.findall
练习
s = "alex,meet,ave_j"
import re
print(re.findall('ee',s)) #从左往右找,找出对应的字符
元字符
\w 匹配出出特殊符号的字符串,如中文,字母,下划线,数字 ***
s = "alex,meet,ave_j"
re.findall("\w",s)
结果为['a','l','e','x','m','e','e','t','a','v','e','_','j']
\W 匹配非字母字符串(包含中文)或者下划线,数字
\s 匹配任意的空白符(空格)
\S匹配非空格(包含特殊符号)(包括中文),数字,下划线 ***
\d 匹配数字
\D 匹配非数字
\A 匹配以什么开头
^ 匹配以什么开头 findall('^a',s)
\Z 匹配以什么结尾 re.findall('!\Z',s)
$ 匹配以什么结尾re.findall('!$ ',s)
以什么开头,以什么结尾 django
. 代表任意字符
re.findall('.',s) 匹配到字符串中的所有字符(换行和制表符除外)
re.findall('.',s,re.DOTALL) 这样就可以匹配到换行符
\n \t
[] 匹配括号中的内容
练习
re.findall("[0-9]",s) 匹配字符中的0-9字符串
re.findall("[0-9a-zA-Z]",s) 匹配0-9,a-z,A-Z的字符串
re.findall("[^0-9]",s) 匹配取反,匹配非0-9字符串
re.findall("[^.]",s) 匹配非.点所有字符串 在括号中.只是字符串点
不代表任意字符
*
匹配0-n 也就是匹配字符e*0-e*n
个字符 贪婪匹配
+
匹配1-n个字符串 re.findall("e+",s)
匹配结果 1-n贪婪匹配
?匹配左边0-1个 如re.finadall("e?",s)
匹配结果 0-1 非贪婪
精确匹配
re.finadall("e{2}",s)
匹配两个e,也就是匹配字符串中的ee
re.findall("e{0,3}",s)
匹配字符传中,0-3个e的字符串,匹配顺序先匹配3个的,再匹配两个的,依次往下
| 或的意思
练习
re.findall("a|e",s) #匹配字符串中e或者a的一个字符串
() 分组
练习
re.findall("l(e)a",s) #匹配满足前面是l,后面是a的e
re.findall("e(?:e)e",s) #匹配到前面是e,后面也是e的e,匹配结果带上()括号前后的内容