多测师讲解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 ...
随机推荐
- KMP - NOI2014 动物园
单题分析:NOI2014 动物园. 题目分析:很明显题目已明确指出这是有关KMP的题,思考KMP.本题与普通KMP不同之处在于它求的是不相交最长相同前缀后缀. 如何处理不相交: 1.暴力 2. ...
- myeclipse操作hdfs
myeclipse与hadoop集成我就不说了,还是简单说两句吧! 1.hadoop搭建完毕且可以正常访问(Linux搭建的集群环境 主机是windos) 2.在主机上将hadoop包解压 3.通过m ...
- python图片转码为base64
import base64 def image_base64(): with open(image_path, 'rb', )as f: base64_data = base64.b64encode( ...
- spring boot 在框架中注入properties文件里的值(Spring三)
前一篇博客实现了打开第一个页面 链接:https://blog.csdn.net/qq_38175040/article/details/105709758 本篇博客实现在框架中注入propertie ...
- md5命令
AIX 系统md5命令之csum #csum filename (默认使用md5算法) #csum -h SHA1 filename (使用sha1算法)Linux系统命令之md5sum 1. 背景 ...
- oracle之网络
Oracle 网络 sqlplus sys/123123@192.168.143.90:1521/urpdb as sysdba 15.1 Oracle Net 基本要素: 15.1.1 服务器端的l ...
- JDK15正式发布,划时代的ZGC同时宣布转正
你发任你发,我用Java8.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BA ...
- 现代C++教程:高速上手(四)-容器
1.线性容器 std::array与std::vector不同的是,array对象的大小是固定的,如果容器大小是固定的,那么可以优先考虑使用std::array容器. 由于std::vector是自动 ...
- oracle adf 入门
入门必踩坑 坑1:jdeveloper里没有mysql的driver,在maven库里引入了,connection里连接正常,但是deploy出错,can't load driver.即使在项目和to ...
- Win10环境下Hadoop(单节点伪分布式)的安装与配置--bug(yarn的8088端口打不开+)
一.本文思路 [1].配置java环境–JDK12(Hadoop的底层实现语言是java,hadoop运行需要JDK环境) [2].安装Hadoop 1.解压hadop 2.配置hadoop环境变量 ...