1 # re 模块 正则表达式 处理字符串 模糊匹配 2 3 # 元字符 . $ * + {} [] () ^ | 4 5 # . 通配符 所有字符都能匹配 除了 6 7 import re 8 # a = re.findall('a..l','gkayjl') # ...表示中间任何字符 9 # a = re.findall('a..l','bcakklsbdvksaool') 符合条件的话可以匹配多个 10 # print(a) 11 12 # ^ 尖角号 以什么开头 在字符串的开头进行匹配 13 # a = re.findall('^a..l','akalbcd') 14 # print(a) 15 16 # $ 放在结尾处 17 # a = re.findall('a..l$','abcdefg axxl') 18 # print(a) 19 20 # 重复符 有四个,分别是* + ? {} 21 22 # * 匹配0---无穷次 23 # + 匹配 1---无穷次 24 # a = re.findall('a*','bdaksjbksbaaaaaaaaaaaaaaaaaaaaaaaaahjvhvkkavj') 25 # print(a) 26 27 # a = re.findall('^a*','aaaaaksbaaaaaaahjvhvkkavjaaaa') 28 # print(a) 29 30 # a = re.findall('a*$','aaaaaksbaaaaaaahjvhvkkavjaaa') 31 # print(a) 32 33 # a = re.findall('alex+','absalexxxxxxxciaale') 34 # print(a) # 输出 : ['alexxxxxxx'] 最少有一个符合 35 36 # a = re.findall('alex*','absalexxxxxxxciaale') 37 # print(a) 38 39 40 # ? 0---1 次这两个值 41 # a = re.findall('alex?','hiubbalex ale alexxxx') 42 # print(a) 43 44 # {} 是万能的 多少次都行 45 # {0,}===》* {1,}===》+ {0,1}===》? 46 47 # a = re.findall('alex{6}','hiubb ale alexxx alexxx alexxxxxx') 48 # 匹配x重复六次的 49 # print(a) 50 51 # * + ? 都是贪婪匹配 加上 ? 变为惰性匹配 52 # a = re.findall('alex*?','asdghjalexxxxxbljjl') 53 # print(a) 54 55 56 # a = re.findall('a[a-z]','aa a ab ac az yui') 57 # print(a) 58 59 # a = re.findall('a[a-z]12','aa12 a1 ab2 ac az yui') 60 # print(a) 61 62 # a = re.findall('a[b*z]','aa az a*z ') 63 # print(a) 64 65 # a = re.findall('a[a-z]*','aa a abbbbbbbbbbbbbbbbbbbbbbb 1aaa abcdefghigklmnopq fghchgxgjd jtyr yui') 66 # print(a) 67 68 69 # a = re.findall('a[^a-z]','aa09 av a9 a7') 70 # print(a) 71 72 73 # a = re.findall('([^()]*)','13+(45*6+8-5*(3-2))') 74 # print(a) 75 76 # 字符集 [^]非的意思 [-] [] 77 78 # 反斜杠后面跟元字符去除特殊功能 反斜杠后面跟普通字符实现特殊功能 79 80 # d 匹配任何十进制数字;相当于类 [0-9] 81 # D 与 d 相反,匹配任何非十进制数字的字符;相当于类 [^0-9] 82 # s 匹配任何空白字符(包含空格、换行符、制表符等);相当于类 [ fv] 83 # S 与 s 相反,匹配任何非空白字符;相当于类 [^ fv] 84 # w 匹配任何字符,见上方解释 85 # W 于 w 相反 86 # 匹配一个特殊字符边界,比如空格,&,#等 87 # B 与 相反 88 89 90 # a = re.findall('d','13+(45*6+8-5*(3-2)') 91 # print(a) 92 93 # a = re.findall('D+','dog pig cat') 94 # print(a) 95 # 96 # a = re.findall('s',' 1') 97 # print(a) 98 99 # 转义字符 100 101 # a = re.findall('I\b','I AIN AA') 102 # print(a) 103 104 105 106 # 元字符之分组 107 108 109 # a = re.findall('(abc)+','abcabcabcabcabc') 110 # print(a) 111 112 # search 只找第一个满足的,找到之后便不再找后面的 113 114 # a = re.search('d+','abcdefg123hcjh5') 115 # print(a) 116 117 # a = re.search('(?p<name>w+)','123abc456') 118 # print(a) 119 120 # a = re.search('d+','abcde45lhkh12').group() 121 # print(a) 122 123 124 125 126 127 128 129 # # re模块 130 # # 常用的方法 131 # compile(pattern, flags=0) 匹配任何可选的标记来编译正则表达式的模式,然后返回一个正则表达式对象 132 # match(pattern, string, flags=0) 使用带有可选标记的正则表达式的模式来匹配字符串。如果匹配成功,返回匹配对象,否则返回None 133 134 # a = re.match('d+','12abcde45lhkh23').group() #只匹配开头的 135 # print(a) 136 137 # search(pattern, string, flags=0) 使用可选标记搜索字符串中第一次出现的正则表达式模式。如果匹配成功,则返回匹配对象,否则返回None 138 # findall(pattern, string[, flags] ) 查找字符串中所有(非重复) 139 # 出现的正则表达式模式,并返回一个匹配列表 140 # finditer(pattern, string[, flags] ) 与findall() 141 # 相同,但返回的是一个迭代器。对于每一次匹配,迭代器都能返回一个匹配对象 142 143 144 # split(pattern, string, max=0) 根据正则表达式的模式分隔符,split函数将字符串分割为列表,返回匹配列表,分割最多操作max次 145 # a = re.split('','hello world') 146 # print(a) 147 # a = re.split('[ho ]','hello world') 148 # print(a) 149 150 151 # group(num=0) 返回整个匹配对象,或者编号为num的特定子组