多测师讲解python _re模块_高级讲师肖sir
import re
# 一、常用方法:
# match():从头匹配
# search():从整个文本搜索
# findall():找到所有符合的
# split():分割
# sub():替换
# group():结果转化为内容
# groupdict():结果转化为字典
二、常用的正则表达式符号
# '^'匹配字符开头
#
# '$'匹配字符结尾
#
# '*'匹配*号前的字符0次或多次
#
# '+'匹配前一个字符1次或多次
#
# '?'匹配前一个字符1次或0次
#
# '{m}'匹配前一个字符m次
#
# '{n,m}匹配前一个字符n到m次
#
# '|'匹配符号两边的任意一个,相当于或
#
# '(...)'分组匹配
#
# '\A'只从字符开头匹配,比如re.search("\Aabc","gggggabc") 是匹配不到的
#
# '\Z'匹配字符结尾,和$一样
#
# '\d'匹配数字0-9
#
# '\D'匹配非数字
#
# '\w'匹配[A-Za-z0-9]
#
# '\W'匹配非[A-Za-z0-9]
#
# '\s'匹配空白字符、\t、\n、\r
三、
match

# (1).:默认匹配除\n之外的任意一个字符。'''
# s='abc123wfj456'
# c = re.match('....', s) #match():从头匹配
# print(c.group()) # 结果:abc1 group():结果转化为内容
# #(.)代表一个字符

#(2)+:匹配前一个字符1次或多次。'''
s='abc123wfj456'
c= re.match('.+', s)
print(c.group()) # 结果:abc123wfj456

#(3)^:从开头匹配字符。'''
s='abc123wfj456'
c = re.match('^abc\d+', s) #\d表示字符
print(c.group()) # 结果:abc123

search方法
# (4)字母数字一起匹配
# s='abc123fj456'
# c= re.search('b[a-z0-9]+j',s )#
# print(c.group()) # 结果:bc123fj
x = re.search('a[a-z0-9]+v', 'aaaaa1111444avbdfff')
print(x.group()) # 结果

search方法
(5)?:匹配?的前一个字符出现或者不出现'''
s='abc123fj456'
c= re.search('ab?',s )#?前一个字符可取可不取,a必须取
print(c.group()) # 结果:ab

search方法
(6)
c= re.search('abc?12s?',s )#?前一个字符可取可不取,a必须取
print(c.group()) # 结果:b
# 注意: 第一个?前面的数都出现,?前面的字符不出现,前面的数必须出现
# s='abc123fj456'
# c= re.search('ab?',s )#?前一个字符可取可不取,a必须取
# print(c.group()) # 结果:ab
# s='abc123fj456'
# c= re.search('abc124?',s )#?前一个字符可取可不取,a必须取
# print(c.group()) # 结果:abc12
# c= re.search('abc?12s?',s )#?前一个字符可取可不取,a必须取
# print(c.group()) # 结果:abc12
# # 注意: 第一个?前面的数都出现,?前面的字符不出现,前面的数必须出现

search方法
# (7)|:或'''
s='abc123fj456'
c= re.search('abc|123',s )#匹配符号两边任意一个,如果都存在就从左开始取
print(c.group()) # 结果:ab
s='abc123fj456'
c= re.search('abd|123',s )#匹配符号两边任意一个,如果都存左边不存在,就取右边
print(c.group()) # 结果:123

search方法
(8)s='yihang18boss01'
c= re.search("(?P<name>[a-zA-Z]+)(?P<age>[0-9]+)(?P<job>\w+)", s).groupdict()
print(c)
# 结果为:{'name': 'yihang', 'age': '18', 'job': 'boss01'}
#备注:groupdict():结果转化为字典 ;? 匹配前一个字符1次或0次;[]:限制''',\w+匹配[A-Za-z0-9]

search方法
(9)
s = '362421199806106218'
c = re.search('(?P<province>\d{3})(?P<shi>\d{3})(?P<birth>\d{8})(?P<num>\d{2})(?P<last>\d{2})', s).groupdict()
print(c)
# 结果为:{'province': '362', 'shi': '421', 'birth': '19980610', 'num': '62', 'last': '18'}

split方法
(10)
# #split()分割'''
# res = re.split('[a-z]+', 'ab23bas23basd9989ad')
# print(res) # 结果为['', '23', '23', '9989', '']
# res = re.split('[1-9]+', 'ab23bas3basd9989ad')
# print(res) # 结果为['ab', 'bas', 'basd', 'ad']

sub方法
(11)
#sub()替换,count不写默认为全体换'''
s = re.sub('[0-9]+', '#', 'abc2abc8abc4d', count=3)
# + 匹配前一个字符1次或多次 , ? (替换内容)
print(s) # 结果:abc#abc#abc#d

match方法
(12)
aa=re.match('\d+',a) #
print (aa.group()) #通过group函数获取对象中的结果
b='a2233113abf123'
bb=re.match('\d+',b) #
print (bb.group()) #通过group函数获取对象中的结果

match方法
(13)
#大写的D:匹配非数字
c="@@##!!abc123sad"
y=re.match("\D{1}",c)
print(y.group())

match方法
(14)
y1=re.match("\D{10}",c)
print(y1.group())

find all 方法
(15)
# import re
a="1!2!3!4asdf567"
yy =re.findall("\d",a)
print(yy) #匹配所有相关的为止
# # #打印结果:['1', '2', '3', '4', '5', '6', '7']

find all 方法
(16)
# import re
a="1!2!3!456sdf"
yy =re.findall("\d",a)
print(yy) #匹配所有相关的为止
# # #打印结果:['1', '2', '3', '4', '5', '6', '7']
y1 =re.findall("\d+",a)
print (y1)

拓展:
compile 方法O(只是用来编译
)

compile 方法
# import re
# content = 'Citizen wang , always fall in love with neighbour,WANG'
# print(type(content))
# rr = re.compile(r'wan\w', re.I) # 不区分大小写
# print(type(rr))
# #re.match(pattern, string[, flags=0])
# # #pattern 匹配模式,由 re.compile 获得
# a = rr.findall(content)
# print(type(a))
# print(a)
f = 'Citizen wang , always fall in love with neighbour,WANG'
# print (type(f))
yy =re.findall("WAN\w",f ,re.I)
# print (type(yy))
print(yy)
import re
pattern = re.compile(r'[a-z]+')
res = pattern.findall('123abc456cde')
print(res)
text="JGod is a handsome boy ,but he is a ider"
regex=re.compile(r'\w*o\w*')
print (regex.findall(text))
备注拓展:
# re.I(re.IGNORECASE)
# 使匹配对大小写不敏感
# re.L(re.LOCAL)
# 做本地化识别(locale-aware)匹配
# re.M(re.MULTILINE)
# 多行匹配,影响 ^ 和 $
# re.S(re.DOTALL)
# 使 . 匹配包括换行在内的所有字符
# re.U(re.UNICODE)
# 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
# re.X(re.VERBOSE)


多测师讲解python _re模块_高级讲师肖sir的更多相关文章
- 多测师讲解requests __介绍_高级讲师肖sir
我们今天讲解的内容 一.什么是Requests? Requests是用Python语言编写的简单易用的HTTP库,用来做接口测试的库. 二.安装requests库 1.按住Windows标志+r,在运 ...
- 多测师讲解requests __中_高级讲师肖sir
(1)生成报告 import unittest #导入单元测试框架 import requests #导入接口库 import time # #时间戳,导入time模块 from api.HTMLTe ...
- 多测师讲解requests __上_高级讲师肖sir
1.三种接口接口请求方式 # # 在python当中接口的请求方式有哪些:# import requests # 导入requests接口库# # # # 请求方式有三种:# # # # 第一种:# ...
- 多测师讲解selenium _assert断言_高级讲师肖sir
assert断言 # # 断言:最常用的断言方法if判断# assert Python语法中自带的断言from selenium import webdriverfrom time import sl ...
- 多测师讲解 _requests安装问题解决_高级讲师肖sir
步骤一:"dos下新建一个pip文件,在文件下建一个pip.ini 文件,步骤二:文件中内容[global]index-url=http://mirrors.aliyun.com/pypi/ ...
- 多测师讲解自动化 _rf 变量_高级讲师肖sir
rf变量 log 打印全局变量 列表变量: 字典变量: 查看当前工程下的变量 紫色表示变量名有误 设置全局变量 设置列表变量 设置字段变量 关键字书写格式问题
- 多测师讲解自动化测试 _RF连接数据库_高级讲师肖sir
RF连接数据库:1.Connect To Database(连接数据库)2.Table Must Exist(表必须存在)3.Check If Exists In Database(查询某条件是否存在 ...
- 多测师讲解seleniun_ ACTIONCHAUNS定位_高级讲师肖sir
1.传统方法定位 2.模拟鼠标定位
- 多测师讲解selenium_iframe框定位_高级讲师肖sir
iframe 框定位方法: 查看iframe框 京东点击登录定位元素 定位qq: qq登录定位的元素 查找iframe框 定位iframe框 from selenium import webdrive ...
随机推荐
- Agumaster 增加日交易数据列表
- Vue 侦听器 watch
1. 侦听器 watch Vue 提供了一种更通用的方式来观察和响应 Vue 实例上的数据变动:侦听属性 当属性发生改变时,自动触发属性对应的侦听器. 当需要在数据变化时执行异步或开销较大的操作时,这 ...
- liunx之firewalld&SELinux
1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...
- VS调试出现解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题
- grpc服务如何添加sentry监控(添加中间件)
目录 需求 解决 需求 sentry是一款非常好用的工具,可以方便追踪线上的异常,在gin框架里边可以非常方便的使用Use添加中件间,grpc服务在网上搜索了一堆没一个能用的,只能硬着头皮看源码 终于 ...
- Knowledge 1:Propositional Logic 命题逻辑基础及符号
Keywords reasoning 推理 Deductive reasoning(for a basic logic) 演绎推理 analogy 类比:比喻 /əˈnælədʒi/ definiti ...
- Linux实战(11):Centos后期添加网卡配置
前言 最近在折腾网卡,发现在已装centos上的机器上直接加网卡,开机后在系统中是没有启动的,下面的步骤是启动的过程,大家可以参考一下. 正文 首先我们先看网卡配置目录下的文件跟网卡 查询UUID y ...
- hystrix源码之插件
HystrixPlugins 获取并发相关类(HystrixConcurrencyStrategy).事件通知类(HystrixEventNotifier).度量信息类(HystrixMetricsP ...
- ip子网掩码计算及子网划分
为什么要懂 子网掩码计算,及子网划分属于网络基础知识.一般在几个地方会用到: 公司避免产生网络风暴而划分子网,帮助路由器判断对应主机是否在同一个网段中 服务器相互隔离而划分子网,一般机房管理人员规划: ...
- 给你的MyBatis-Plus装上批量插入的翅膀
努力和选择,哪个更重要?关注微信公众号[天开易想]这是一位懂互联网研发和架构的户外.篮球老铁 前言 各位好,我是易哥(thinkYi). 大家有用过MyBatis-Plus(简称MP)的都知道它是一个 ...
