正则表达式
发布时间:2020-12-14 06:12:18 所属栏目:百科 来源:网络整理
导读:1 import re 2 3 res = r " 速度[1-8a-zA-Z] " # 1...8 a...z A...Z 4 result = re.match(res, " 速度z " ) 5 print (result) 6 # 匹配出的数据 7 print (result.group()) 8 9 import re 10 11 res = r " 速度w " # 0...9 a...z A...Z 所有汉字 12 result =
1 import re 2 3 res = r"速度[1-8a-zA-Z]" # 1...8 a...z A...Z 4 result = re.match(res,"速度z") 5 print(result) 6 # 匹配出的数据 7 print(result.group()) 8 9 import re 10 11 res = r"速度w" # 0...9 a...z A...Z 所有汉字 12 result = re.match(res,"速度哈哈") 13 print(result) 14 # 匹配出的数据 15 print(result.group()) 16 17 res = r"速度Wd" # 非单词字符 18 result = re.match(res,"速度,1") 19 print(result) 20 # 匹配出的数据 21 print(result.group()) 22 23 res = r"速度sd" # 空格 tab键 0..9 24 result = re.match(res,"速度t1") 25 print(result) 26 # 匹配出的数据 27 print(result.group()) 28 29 res = r"速度Sd" # 大写的S匹配非空白 30 result = re.match(res,"速度啦1") 31 print(result) 32 # 匹配出的数据 33 print(result.group()) 34 35 res = r"速度." # 通配符,匹配任意 36 result = re.match(res,"速度#") 37 print(result) 38 # 匹配出的数据 39 print(result.group()) 40 41 res = r"速度d{1,2}" # 匹配指定位数1到2位 42 result = re.match(res,"速度19") 43 print(result) 44 # 匹配出的数据 45 print(result.group()) 46 47 res = r"d{11}" # 匹配连续11位的数字 48 result = re.match(res,"13500000000") 49 print(result) 50 # 匹配出的数据 51 print(result.group()) 52 res = r"a{11}" # 匹配一个字符出现多少次 53 result = re.match(res,"aaaaaaaaaaa") 54 print(result) 55 # 匹配出的数据 56 print(result.group()) 57 58 res = r"d{3,4}-?d{7,8}" # ?匹配前面那个可有可无 59 # result = re.match(res,"028-12345678") 60 result = re.match(res,"0531-12345678") 61 print(result) 62 # 匹配出的数据 63 print(result.group()) 64 65 html = """qwertnasdfg""" 66 res = r".*" # 匹配出现0次或无限次 *除了n都能匹配 67 result = re.match(res,html) 68 print(result) 69 70 html = """qwertnasdfgnzxcvb""" 71 res = r".*" # *除了n都能匹配 72 result = re.match(res,html,re.S) # re.s匹配出n的所有数据 73 print(result) 74 75 str1 = """qwertasdfgzxcvb""" 76 res = r".+" # 匹配出现1次或无限次 77 result = re.match(res,str1) # re.s匹配出n的所有数据 78 print(result) 79 80 判断变量是否合法 81 82 import re 83 84 85 def main(): 86 names = ["name1","_name","str!","__main__","1name","_age_1","a#123"] 87 res = r"^[a-zA-Z_][a-zA-Z0-9_]*$" 88 89 for name in names: 90 ret = re.match(res,name) 91 if ret: 92 print("变量名:%s 符合要求" % ret.group()) 93 else: 94 print("变量名:%s 不符合要求" % name) 95 96 97 if __name__ == ‘__main__‘: 98 main() 99 100 邮箱验证 101 102 import re 103 104 email = [ 105 ‘[email?protected]‘,106 ‘[email?protected]‘,107 ‘[email?protected],com‘,108 ‘[email?protected]‘,109 ‘[email?protected]?q?.com‘,110 ‘[email?protected]@qq.com‘,111 ‘[email?protected]@139.com‘,112 ‘[email?protected]。com.cn‘,113 ‘[email?protected])m‘,114 ‘[email?protected]‘,115 ‘[email?protected]_.com.cn‘,116 ‘[email?protected]_163sadasdf.com.cn‘ 117 ] 118 # 使用到普通字符,需要加一个转义符 119 res = r"^[a-zA-Z0-9_-][email?protected][a-zA-Z0-9]+(.[a-zA-Z0-9]+)+$" 120 121 for e in email: 122 ret = re.match(res,e) 123 if ret: 124 print("%s 是合法的邮箱地址" % ret.group()) 125 126 匹配分组 127 128 import re 129 130 email = [ 131 ‘[email?protected]‘,132 ] 133 134 # 匹配分组只通过163 126信箱 135 res = r"^([a-zA-Z0-9_-]+)@(163|126)+(.[a-zA-Z0-9]+)+$" 136 137 for e in email: 138 ret = re.match(res,e) 139 if ret: 140 # 取出分组group(1)匹配 ronle 141 print("%s 是用户名" % ret.group(1)) 142 # 取出分组group(2)匹配 163 143 print("%s 是合法的邮箱地址" % ret.group(2)) 144 145 146 import re 147 148 html_str = "<p>hello</p>" 149 html_str2 = "<body><p>hello</p></body>" 150 151 # 1 等值于分组(w*) 转换下就是 <w*>.*</w*> 152 res = r"<(w*)>.*</1>" 153 res2 = r"<(w*)><(w*).*</2></1>" 154 155 ret = re.match(res,html_str) 156 ret2 = re.match(res2,html_str2) 157 print(ret.group()) 158 print(ret2.group()) 159 160 分组别名 (给分组定义个变量) 161 162 import re 163 164 html_str = "<body><p>hello</p></body>" 165 res = r"<(?P<p1>w*)><(?P<p2>w*).*</(?P=p2)></(?P=p1)>" 166 167 ret = re.match(res,html_str) 168 169 print(ret.group()) 170 171 search findall sub 172 173 import re 174 175 # 查找 176 ret = re.search(r"d+","下阅读量9999") 177 print(ret.group()) # 9999 178 179 # 查找全部 180 ret = re.findall(r"d+","阅读量9999,下载量9123") 181 print(ret) # [‘9999‘,‘9123‘] 182 183 # 替换 184 ret = re.sub(r"d+","777","阅读量9999,下载量9123") 185 print(ret) # 阅读量777,下载量777 186 187 188 支持函数替换 189 190 def add_num(temp): 191 num = temp.group() 192 result = int(num) + 1 193 return str(result) 194 195 196 # 替换 197 ret = re.sub(r"d+",add_num,"阅读量9999,下载量9123") 198 print(ret) # 阅读量10000,下载量9124 199 200 # 切割 201 ret = re.split(r":| ","name:cheng beyond") 202 print(ret) # [‘name‘,‘cheng‘,‘beyond‘] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |