分组在re模块中的使用
import re #search
s = "<a>wahaha</a>" #标签语言 html 和 web相关
ret= re.search("(>)(\w+)(<)",s)
print(ret.group()) #>wahaha< 和print(ret.group(0))结果一样
print(ret.group(1)) #> 数字参数代表取对应分组中的内容
print(ret.group(2)) #wahaha
print(ret.group(3)) #<
# search分组 通过数字显示 # findall
# 为了findall可以顺利取到分组中的内容,有一种特殊的语法,就是优先显示分组内容
ret= re.findall(">\w+<",s)
print(ret) #['>wahaha<'] ret= re.findall(">(\w+)<",s) #加括号会优先显示(\w+)的内容,两边的> < 就不显示了
print(ret) #['wahaha'] # 取消分组优先(?: 正则表达式)
ret= re.findall("\d+(\.\d+)?", "1.234.5.678")
print(ret) #['.234', '.678'] python把正则中的括号当成了优先分组,所以取出来的是小数点之后的,
# 因为正则规则用了()规定小数,所以函数会当成优先级执行 ret2= re.findall("\d+(?:\.\d+)?", "1.234.5.678") #在括号中加上?: 可以取消优先级
print(ret2) #['1.234', '5.678'] #split
#没有分组的时候会把切掉的内容不显示,加上分组会一起显示出来
ret = re.split("\d+","alex29egon30")
print(ret) #['alex', 'egon', ''] ret = re.split("(\d+)","alex29egon30")
print(ret) #['alex', '29', 'egon', '30', ''] #分组命名 (?P<这个组的名字>正则表达式)
s = '<a>wahaha</a>'
ret = re.search('>(?P<name>\w+)<',s)#把想取出来的wahaha单独括起来了,并且加了 ?P 和一个名字 (name)
print(ret.group()) #>wahaha<
print(ret.group(1)) #wahaha 因为就一个分组,所以直接取wahaha
print(ret.group('name')) #wahaha 也可以通过组名取值 s = '<a>wahaha</a>'
pattern = '<(\w+)>(\w+)</(\w+)>'
ret = re.search(pattern,s)
print(ret.group(1) == ret.group(3)) # True 判断前后两个标签名 a a 字是否一致 s = '<a>wahaha</A>'
pattern = '<(\w+)>(\w+)</(\w+)>'
ret = re.search(pattern,s)
print(ret.group(1) == ret.group(3)) # False 判断前后两个标签名 a A 字是否一致
# 使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
s = '<a>wahaha</A>'
pattern = '<(?P<tab>\w+)>(\w+)</(?P=tab)>'
ret = re.search(pattern,s)
print(ret) #None 前后分组的名字不一致, 返回None s = '<a>wahaha</a>'
pattern = '<(?P<tab>\w+)>(\w+)</(?P=tab)>' #要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
ret = re.search(pattern,s)
print(ret.group(2))
s = '<a>wahaha</a>'
pattern = '<(?P<tab>\w+)>(\w+)</(?P=tab)>' #要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
ret = re.findall(pattern,s)
print(ret) #[('a', 'wahaha')] s = '<a>wahaha</a>'
pattern = r'<(\w+)>(\w+)</(\1)>' #\1 直接表示了第一个()里的内容, 这个没有tab,没有组名,直接用数字表达了,但是需要在字符串前加上一个r, 对\1转义
ret = re.findall(pattern,s)
print(ret) #[('a', 'wahaha', 'a')]
# 这些情况会用到
# 2018-12-06
# 2018.12.6
# 2018 12 06
# 12:30:30
分组在re模块中的使用的更多相关文章
- 分组在re模块中的使用以及使用正则表达式的技巧
1.split:切割 使用split不会返回被切割的字符 import re ret = re.split("\d+","5as46asf46asf46a") ...
- python基础:os模块中关于文件/目录常用的函数使用方法
Python是跨平台的语言,也即是说同样的源代码在不同的操作系统不需要修改就可以同样实现 因此Python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心什么操作系统下使用什么模 ...
- os模块中关于文件/目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- 18 os/os.path模块中关于文件/目录常用的函数使用方法 (转)
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名('. ...
- os、os.path模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举 ...
- python编程os、os.path 模块中关于文件、目录常用的函数使用方法
os模块中关于文件/目录常用的函数使用方法 函数名 使用方法 getcwd() 返回当前工作目录 chdir(path) 改变工作目录 listdir(path='.') 列举指定目录中的文件名( ...
- 0802_转载-nn模块中的网络层介绍
0802_转载-nn 模块中的网络层介绍 目录 一.写在前面 二.卷积运算与卷积层 2.1 1d 2d 3d 卷积示意 2.2 nn.Conv2d 2.3 转置卷积 三.池化层 四.线性层 五.激活函 ...
- Nginx基础知识之————RTMP模块中的中HLS专题(翻译文档)
一.在Nginx配置文件的RTMP模块中配置hls hls_key_path /tmp/hlskeys; 提示错误信息: nginx: [emerg] the same path name " ...
- 一个Angular模块中可以声明哪些组件?
一个Angular模块中可以声明哪些组件? (1) controller 控制器 (2) directive 指令 (3) function ...
随机推荐
- Emgu-WPF 激光雷达研究-移动物体跟踪2
原文:Emgu-WPF 激光雷达研究-移动物体跟踪2 初步实现了去燥跟踪,并用圆点标注障碍物 https://blog.csdn.net/u013224722/article/details/8078 ...
- sql count(1)不要和查询数据混用 非常耗时
count(1)不要和查询数据混用 非常耗时 例子: SELECT w.[PKID], COUNT(1) OVER() AS TotalCount FROM w WITH(NOLOCK) INNER ...
- jquery hover()的使用
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- C#基础:ref和out的区别 [转]
ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键 ...
- TCPClient组件和TCPServer组件的主要方法和属性
IdTCPClient属性1 : IOHandler 如果有相应的输入/输出操作,那么IOHandler相对应的组件或接口将提供一个虚拟/抽象的输入/输出接口给相应的网络连接2 : Intercept ...
- Window 下 MySQL 环境的安装
Window 下 MySQL 环境的安装 简介: MySQL 是最流行的关系型数据库管理系统,在WEB应用方面 MySQL 是最好的RDBMS(Relational Database Manageme ...
- phpexcel导出超过26列解决方案
原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下: PHPExcel_Cell::stringFromColumnIndex($i); // 从o,1,2,3,.. ...
- 零元学Expression Blend 4 - Chapter 27 PathlistBox被Selected时的蓝底蓝框问题
原文:零元学Expression Blend 4 - Chapter 27 PathlistBox被Selected时的蓝底蓝框问题 最近收到网友Cloud的来信,询问我有关放进PathlistBox ...
- Android零基础入门第29节:善用TableLayout表格布局,事半功倍
原文:Android零基础入门第29节:善用TableLayout表格布局,事半功倍 前面学习了线性布局和相对布局,线性布局虽然方便,但如果遇到控件需要排列整齐的情况就很难达到要求,用相对布局又比较麻 ...
- SignalR---服务端
原文:SignalR---服务端 前段时间把SignalR的官网教程大致看了一下,算是翻译了一遍,加上了自己的个人理解, 一下上传三个文件,分别是服务端.web客户端.DOTNET客户端相关文档,供大 ...