加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间: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‘]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读