import re
# (^)匹配开头
print(re.findall("^a","as")) # ['a']
# (.)通配符
print(re.findall("f..", "sdffa")) # ['ffa']
# (+)至少一个
print(re.findall("ass+","weqwerqasssss")) # ['asssss']
# (*)0到无限多
print(re.findall("a*","qwea")) # ['', '', '', 'a', '']
# (?)只匹配一个或零个
print(re.findall("asd?","qwqeasdddd")) # ['asd']
# ({,})里面可以填匹配次数
print(re.findall("qwwe{0,3}","asdqwwee")) # ['qwwee']
# (|)或的意思
print(re.findall("aaa|bbb","aaaccbbb")) # ['aaa', 'bbb']
print(re.findall("aaa|bbb","aaassb")) # ['aaa']
# ******** 字符集 [] 以上符号失效
print(re.findall("w[qw]","aswwwq")) # 匹配之一 ['ww', 'wq']
print(re.findall("w[a-z]","wasdasd")) # (-)表示范围 ['wa']
print(re.findall("w[^q]","ww")) # (^) 表示非 ['ww']
# ****** 元字符 转义符(\)
# 反斜杠后边跟元字符 可以去除元字符的特殊意义
# 反斜杠后普通字符实现特殊功能
print(re.findall("\d","123qwe23")) # \d 匹配任何十进制数 ['1', '2', '3', '2', '3']
print(re.findall("\D","123qwe12")) # \D 匹配非数字字符 ['q', 'w', 'e']
print(re.findall("\s","ewew qw w")) # \s 匹配空字符 [' ', ' ']
print(re.findall("\S","qw wq www 1")) # \S 匹配非空字符 ['q', 'w', 'w', 'q', 'w', 'w', 'w', '1']
print(re.findall("\w","qwe1212d")) # \w 匹配任何字母数字 ['q', 'w', 'e', '1', '2', '1', '2', 'd']
print(re.findall("\W","qwe121 213")) # \W 匹配任何非字母数字字符 [' ']
print(re.findall("q\\b","q#e2&#.")) # \b 匹配一个特殊字符边界 ['q']
# \\转义防止python 解释器把\b解释,不然re没有拿到真正的\b 。 也可以加r re.findall(r"q\b","q#e")
# ************** 匹配括号内
print(re.findall("\([^()]*\)","32*(12+3*(12-1))")) # ['(12-1)']
# ********** search方法 (分组)只找一个,返回一个对象, findall遍历所有
print(re.search("(?P<name>[a-z]+)","laownag12laoli34").group()) # 使用group取值
print(re.search("(?P<age>[0-9]+)","laowang12laoli34").group("age")) # 根据组名取值
print
(re.search(
"(?P<name>[a-z]+)(?P<age>[0-9])"
,
"laowang23laoli21"
).gr
oup(
"age"
))
# ********* sub方法 替换 参数:(1.替换哪个2.替换为3.传入字符串4.替换几次)
print(re.sub("\w","2","qweas",2)) # 22eas
print(re.subn("\w","2","qwqw")) # ('2222', 4) subn返回元组 替换次数
# ******** finditer方法 返回生成器对象
a = re.finditer("\d","qwe12qwe") # 返回一个对象
print(next(a).group()) # group转换 next取值
# ******** split方法 分隔
print(re.split(" ", "hello sad da")) # ['hello', 'sad', 'da']
print(re.split("\|","qw|ww")) # \转义为普通字符 ['qw', 'ww']
# ******* 组
print(re.findall("www\.(baidu|jiaoyu)\.com","www.baidu.com")) # 优先匹配组里的 ['baidu']
print(re.findall("www\.(?:baidu|jiaoyu)\.com","www.baidu.com")) # 加?:去优先级