关于分组优先以及 " | " 的细致练习

from django.test import TestCase
import re# Create your tests here.
ret = re.findall(r"-?\d+\.\d*|-?\d+", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['1', '-2', '60', '-40.35', '5', '-4', '3']

ret = re.findall(r"-?\d+\.\d*|(-?\d+)", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['1', '-2', '60', '', '5', '-4', '3']

ret = re.findall(r"-?\d+|-?\d+\.\d*", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['1', '-2', '60', '-40', '35', '5', '-4', '3']

ret = re.findall(r"-?\d+|(-?\d+\.\d*)", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['', '', '', '', '', '', '', '']

ret = re.findall(r"(-?\d+\.\d*)|-?\d+", "1-2*(60+(-40.35/5)-(-4*3))")
print(ret)  # ['', '', '', '-40.35', '', '', '']

"|" 的匹配顺序从左向右 , 而且一旦匹配上了就不会匹配后面的那段正则

"()" 是将被匹配的优先显示, 但是匹配不中的内容会被用 "" 空字符串来表示

多个分组的匹配

先按照整体正则匹配, 然后在提取()中,如果有两个分组(), 则以元组形式显示

import res = "A B C D"
# p1 = re.compile("\w+\s+\w+")
# print(p1.findall(s)) # ['A B', 'C D']

p1 = re.compile("(\w+)\s+\w+")
print(p1.findall(s))
# 第一步 ['A B','C D']   # ['(\w+)\s+\w+','(\w+)\s+\w+']
# 第二步 ['A','C']   # ['(\w+)', '(\w+)']

p1 = re.compile("(\w+)\s+(\w+)")
print(p1.findall(s))
# 第一步 ['A B','C D']   # ['(\w+)\s+(\w+)','(\w+)\s+(\w+)']# 第二步 [('A','B'),('C','D')]   # [('(\w+)','(\w+)'),('(\w+)','(\w+)')]

进阶的练习

 

转载于:https://www.cnblogs.com/shijieli/p/10624062.html

re 模块 分组特别说明相关推荐

  1. ThinkPHP 学习笔记 ( 一 ) 项目部署:应用部署方式与模块分组部署方式

    /*** ThinkPHP version 3.1.3*/ ThinkPHP ( 官方网站:http://www.thinkphp.cn/ ) 目前最新版本是 3.2.2,它要求 PHP 的版本高于 ...

  2. 2021中职组网络空间安全国赛CD模块分组混战镜像*

    2021中职组网络空间安全国赛CD模块分组混战镜像 新规程的C,D模块环境 有想法的私信

  3. 【IEEE_Verilog-12.2】覆写模块参数的值

    12.2 Overriding module parameter values 覆写模块参数值 定义参数有两种不同的方法.第一个是module_parameter_port_list(见12.1),第 ...

  4. ThinkPHP使用分组详细介绍(十七)

    原文:ThinkPHP使用分组详细介绍(十七) 使用分组(模块分组) *就是将多个项目合并到一个项目/应用去(就是Home.Admin) ---分组不分组看自己的建立项目习惯,个人习惯用根目录配置生成 ...

  5. ci获取当前url链接的分组,控制器,方法

    public function role() {$ci= &get_instance();//ci控制器超级对象,就是把所有执行的方法打印出来$directory = substr($ci-& ...

  6. operator模块

    operator模块中包含了Python的各种内置操作符,诸如逻辑.比较.计算等,这里我们针对一些常用的操作符来作一个Python中operator模块的操作符使用示例总结: operator模块是p ...

  7. 纯Python模块发布setup脚本编写示例

    纯Python模块发布setup脚本编写示例 2014 年 6 月 22 日IT.PythonIT.python 如果你正准备发布几个模块,特别当它们并不是只在一个特定的包内,你可以在setup脚本中 ...

  8. Python学习 Day 025 -模块相关

    主要内容: 1. 模块 2. import 3. from xxx import xxx 1.模块    (1)模块的概述 模块就是一个包含了python定义和声明的文件, 文件名就是模块的名字加上. ...

  9. 7.16模块及软件开发目录规范

    模块 1.什么是模块? 就是一系列功能的结合体 2.模块的三种来源 (1)内置的(python解释器自带) (2)第三方的(别人写的) (3)自定义的(你自己写的) 3.模块的四种表现 (1)使用py ...

最新文章

  1. 如何检查当TextBox设置为多行时是不是超长了?
  2. Postgres多版本控制
  3. 2021年春季学期-信号与系统-第十二次作业参考答案-第七小题
  4. 2019阿里应届内推编程题
  5. 给自己的Blog 上添加定制的搜索引擎
  6. python数组初始化_Python Numpy 数组的初始化和基本操作
  7. smarty中英文多编码字符截取乱码问题
  8. C#按Esc后退出对话框
  9. CCF201709-4 通信网络(100分)【DFS+BFS】
  10. 解决luyten 启动报错:this application requires a java runtime
  11. java入门-dos窗口的用法
  12. U3D Distortion
  13. 2021-11-09水洗碳带有什么特点
  14. 怎么读取照片上的文字?清描:一键提取,批量识别
  15. fMRI Tutorial:FSL处理功能核磁共振数据
  16. 51单片机 8x8LED点阵屏循环显示数字0~9
  17. go语言 json -转载
  18. 银行业用户井喷式发展——解密巨杉数据库为何收获银行用户青睐
  19. 9008 能 解锁BL_【Android取证】一部锤子手机引起的解锁事件
  20. 【golang】处理jpeg图片压缩后方向发生变化问题

热门文章

  1. Docker Inspect
  2. 垂直居中重要方法理解---重点是方法三
  3. gdb来调式多线程(转)
  4. t-sql导出EXCEL语句
  5. android staticlayout使用讲解,可实现文本绘制换行处理
  6. jvm内置锁synchronized不能被中断
  7. python sys模块
  8. 未解决-hive之drop 表分区失败
  9. 2015年必火的五个Html5移动开发工具推荐
  10. mysql数据库表迁移