Django 用户认证 用户 邮箱登录 邮箱注册 ORM or,and,not form.py FORM ModelForm Paginator 分页 HTMl JQuery 定位元素 ajax django切片 restfulapi 跨域 Ubantu Python Mysql Scrapy 爬虫 导出 Python读写 Pycharm 破解 session re sqlit3 生成式 其他 Prism 富文本 CSS Nginx 部署 请求头 抓包 协议 selenium Ubuntu 宝塔 AI Comfy-ui ollama dify open-webui Git docker
正则表达式的基本用法
张建行 2018年12月7日 02:55 37 文章标签: 定位元素 Python 爬虫 re

正则表达式的基本用法

 import re
 
 # re内置模块
 # 目标字符串:123456abcdefg
 # 1,创建一个表达式对象,compile():括号中填写的是字符串的匹配规则
 # ()表示从目标字符串中提取的子串,一个()对应着一个分组信息
 obj = re.compile('(\d+)(\w+)')
 # 2,根据正则表达式对象,从目标字符串中进行匹配
 # match():第一个参数为正则表达式的规则。第二个参数就是目标字符串
 res = re.match(obj, '123456abcdefg')
 print(res)
 print(res.group(1))
 print(res.group(2))
 
 # .:可以用来匹配前面字符后面跟着的任意一个字符
 # a.:可以匹配到ab,ac,ad,ah,a7,a9
 obj = re.compile('(c.)')
 res = re.match(obj, 'cdefg')
 print(res.group(1))
 
 # *:可以匹配前面字符0个或多个。
 # a*:可以匹配到0个或者aa,aaa,aaaa,
 obj = re.compile('(a*)')
 res = re.match(obj, 'aaabcdefg')
 print(res.group(1))
 
 # ?:可以匹配前面字符0个或1个
 # a?:可以匹配到0个a,或者1个a
 obj = re.compile('(a?)')
 res = re.match(obj, 'abcdefg')
 print(res.group(1))
 
 # +:可以匹配前面字符任意多个,但至少为1个,不能为0个
 # a+:a,aaaa,aaaaa,但是不能一个都匹配不到
 obj = re.compile('(a+)')
 res = re.match(obj, 'aaaaabdefg')
 print(res.group(1))
 
 # ^:表示必须以某某字符开头
 # ^a:只能匹配到以a开头的字符
 obj = re.compile('(^187)')
 res = re.match(obj, '18739391682')
 print(res.group(1))
 
 # $:表示必须以某某字符结尾
 # a$:只能匹配到以a结尾的字符
 obj = re.compile('(com$)')
 res = re.search(obj, 'guishoushi126.@126.com')
 print(res.group(1))
 
 # .*:这个组合表示任意字符出现0个或者多个,也称之为贪婪匹配模式,就是尽可能的匹配符合要求的最大值
 obj = re.compile('(a.*b)')
 res = re.match(obj, 'a123ba456ba789b')
 print(res.group(1))
 
 # .*?:这个组合叫做非贪婪匹配模式,在能够匹配成功的前提下,尽可能少的匹配符合要求的字符
 obj = re.compile('(a.*?b)')
 res = re.match(obj, 'a123ba456ba789b')
 print(res.group(1))
 
 # .+:表示任意字符至少出现一次,不能为0次
 obj = re.compile('(a.+b)')
 res = re.match(obj, 'a123456789b')
 print(res.group(1))
 
 # |:用户设置不同情况的正则表达式,表示或者的意思
 obj = re.compile('(hahaha|heiheihei)123')
 res = re.match(obj, 'hahaha123')
 print(res.group(1))