re 模块

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"))  # 加?:去优先级

猜你喜欢

转载自blog.csdn.net/weixin_42100915/article/details/80270885