正则表达式

import re

findall 返回的是列表


大小w:[每个元素都是字符串的形式]
# \w 字母.数字.下划线.中文 ***
print(re.findall("\w","宝元-alex_dsb123日魔吃D烧饼"))
# \w 不是字母.数字.下划线.中文 ***
print(re.findall("\W","宝元-alex_dsb123日魔吃D烧饼"))


大小d:[每个元素都是字符串的形式]
# \d 匹配数字 ***
print(re.findall("\d","十10⑩"))
#\D 匹配非数字 ***
print(re.findall("\D","十10⑩"))


判断str的开头结尾,查找不到,返回空列表
# 以什么开头 ***
print(re.findall("^a","alex"))
# 以什么结尾 ***
print(re.findall("x$","alex"))


[每个元素都是字符串的形式]
# . 匹配任意一个字符串(\n除外),加re.DOTALL可以显示\n ***
print(re.findall("a.c","abc,aec,a\nc,a,c"))
print(re.findall("a.c","abc,aec,a\nc,a,c",re.DOTALL))


[每个元素都是字符串的形式]
# 区间
print(re.findall('[0-9]',"alex123,日魔dsb,小黄人_229")) ***
print(re.findall('[a-z]',"alex123,日魔DSB,小黄人_229"))
print(re.findall('[A-Z]',"alex123,日魔DSB,小黄人_229"))
[0-9] # 取0-9之前的数字
[^0-9] # 取非 0-9之间的数字
print(re.findall("[^0-9a-z]","123alex456")) ***


# 匹配*左侧字符串0次或多次 贪婪匹配 ***
print(re.findall("a*","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))


# 匹配左侧字符串一次或多次 贪婪匹配 ***
print(re.findall("a+","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))


# 匹配?号左侧0个或1个 非贪婪匹配 ***
print(re.findall("a?","alex,aa,aaaa,bbbbaaa,aaabbbaaa"))


# 指定查找的元素个数 ***
print(re.findall("[0-9]{11}","18612239999,18612239998,136133333323"))
3~8这个区间
print(re.findall("a{3,8}","alex,aaaabbbaaaaabbbbbbaaa,aaaaaaaaabb,ccccddddaaaaaaaa"))


# 分组***
print(re.findall("<a>(.+)</a>","<a>alex</a> <a>wusir</a>"))
# 控制贪婪匹配***
print(re.findall("<a>(.+?)</a>","<a>alex</a> <a>wusir</a>"))

# '查找的元素' 返回的就是这个元素,查不到返回空列表
print(re.findall("\n","alex\nwusir"))
print(re.findall("\t","alex\twusir"))


print(re.findall("\s","alex\tdsbrimocjb"))# \s 匹配空格
print(re.findall("\S","alex\tdsbrimocjb"))# \s 匹配非空格


面试题:
# search 和 match 区别
# search 从任意位置开始查找,查找到结束,没有则返回空列表
# match 从头开始查看,如果不符合就不继续查找了
# group()进行查看

split -- 分割 # [多个分割,需要用列表把分割符号括起来]
print(re.split("[:;,.!#]","alex:dsb#wusir.djb"))

sub -- 替换
s = "alex:dsb#wusir.djb"
print(re.sub("d","e",s,count=1)) # count 计数,控制替换数量
print(re.sub("d","e",s)) # 默认全部替换


compile 定义匹配规则
s = re.compile("\w")
print(s.findall("alex:dsb#wusir.djb"))


返回的就是一个迭代器
s = re.finditer("\w","alex:dsb#wusir.djb")
print(next(s).group())
print(next(s).group())
for i in s:
print(i.group())

\. 没有任意的功能了

 

装逼网站(写好的一些正则表达式):http://tool.chinaz.com/regex/

posted @ 2019-09-17 20:13  徐-  阅读(124)  评论(0编辑  收藏  举报