引入模块:

import re

1.查找
findall   匹配所有,每一项都是列表中的一个元素

ret=re.findall("\d+","sjkhk172按实际花费928")
print(ret)
['172', '928']

search  只匹配从左到右的第一个,得到的不是结果,而是一个变量,通过这个变量的group方法来获取结果。

ret=re.search("\d+","sjkhk172按实际花费928")
print(ret)
print(ret.group()) <_sre.SRE_Match object; span=(5, 8), match=''>
172
ret=re.search("\d+","sjkhk172按实际花费928")

if ret:#内存地址,这是一个正则的匹配结果
print(ret.group())#获取真正的结果 172

match  从头开始匹配,相当于search中的正则表达式加上一个^

ret=re.match("\d+$",'172sjkhk按实际花费928')
print(ret) None
ret=re.match("\d+",'172sjkhk按实际花费928')
print(ret)
print(ret.group()) <_sre.SRE_Match object; span=(0, 3), match='172'>
172
 

字符串处理的扩展:切割、替换

split  切割

s = 'alex83taibai40egon25'
# ret = re.split('\d+',s)
# print(ret) ['alex', 'taibai', 'egon', '']

sub  替换 旧的   新的   替换次数

ret = re.sub('\d+','h','alex83taibai40egon25',2)
print(ret) alexhtaibaihegon25

subn  返回一个元组,返回的第二个元素是替换的次数

ret = re.subn('\d+','H','alex83taibai40egon25')
print(ret) ('alexHtaibaiHegonH', 3)

re模块的进阶    时间  空间

compile   节省使用正则表达式解决时间问题   把正则表达式编译成字节码,在以后的多次使用过程中不会多次编码

ret=re.compile("\d+")
res=ret.findall("alex83taibai40egon25")
print(res)
['83', '40', '25']
res=ret.search("sjkhk172按实际花费928")
print(res.group())
172

finditer  节省正则表达式解决问题的内存或者空间

返回一个迭代器,所有的结果都在这个迭代器中,需要通过循环+group的形式取值 能够节省内存
ret=re.finditer("\d+","alex83taibai40egon25")
for i in ret:
print(i.group()) 83
40
25

分组在ret模块下的使用

s = '<a>wahaha</a>'  # 标签语言 html 网页
ret = re.search('<(\w+)>(\w+)</(\w+)>',s)
print(ret.group()) # 所有的结果
print(ret.group(1)) # 数字参数代表的是取对应分组中的内容
print(ret.group(2))
print(ret.group(3)) <a>wahaha</a>
a
wahaha
a
s = '<a>wahaha</a>'
ret=re.findall('(\w+)',s )
print(ret)
ret=re.findall('>(\w+)<',s)
print(ret) ['a', 'wahaha', 'a']
['wahaha']
为了findall也可以顺利取到分组中的内容,有一个特殊的语法,就是优先显示分组中的内容
# 取消分组优先(?:正则表达式)
ret = re.findall('\d+(\.\d+)?','1.234*4')
print(ret)
['.234', '']
# 分组命名 (?P<这个组的名字>正则表达式)
# s = '<a>wahaha</a>'
# ret = re.search('>(?P<con>\w+)<',s)
# print(ret.group(1))
# print(ret.group('con'))
使用前面的分组 要求使用这个名字的分组和前面同名分组中的内容匹配的必须一致
精准的取到整数 过滤掉小数

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))")
ret.remove('')
print(ret) ['', '', '', '40.35', '', '', '']
['', '', '', '', '', '']

re模块下的的常用方法的更多相关文章

  1. Flex4分模块下样式动态加载步骤及相关问题的解决

    1.  给应用程序编写CSS文件 (1)在项目下创建CSS文件(任意路径,可以多个).本例在src下创建了5个样式文件 (2)Flex支持的CSS文件定义如下: a)  type selector(类 ...

  2. thinkphp6.0 多应用模块下提示控制器不存在

    thinkphp6.0 多应用模块下提示控制器不存在 在项目根目录下使用Composer composer require topthink/think-multi-app 参考链接

  3. re模块下的常用方法

    一  :  re模块的查找 findall  优先级查找  返回列表 找所有的匹配项(从大段的内容中找匹配到的项目) import re str = "qwer asdf zxcv qwer ...

  4. os和sys模块的区别及其常用方法总结

    官方解释:os: This module provides a portable way of using operating system dependent functionality. 翻译:提 ...

  5. python学习笔记五 模块下(基础篇)

    shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...

  6. phpcms v9 源码解析(4)content模块下的index.php文件的init()方法解析

    在了解index.php中的init函数的时候,让我们先看看最开始的几行代码 1-5  第二行, defined('IN_PHPCMS') or exit('Nopermission resource ...

  7. “死锁” 与 python多线程之threading模块下的锁机制

    一:死锁 在死锁之前需要先了解的概念是“可抢占资源”与“不可抢占资源”[此处的资源可以是硬件设备也可以是一组信息],因为死锁是与不可抢占资源有关的. 可抢占资源:可以从拥有他的进程中抢占而不会发生副作 ...

  8. 摘要算法---hashlib模块下MD5和SHA的使用

    作用: 任意长度的字符串内容通过摘要算法都可以生成唯一序列摘要值,通过摘要算法,可以校验某个文档或者某组字符串是否被修改. 应用: 1.文件内容一致性校验 2.用户登录验证 常用方法 update() ...

  9. Yii2访问自定义模块下的controller

    之前,由于所要访问的controller都是位于根目录下的controllers目录下,就像下面这样: 此时,我们可以直接通过 localhost/basic/web/index.php?r=dao/ ...

随机推荐

  1. FreeBSD上安装Cassandra 3.10

    哈哈,你居然点进来了,来吧,一起吐槽FreeBSD啊,装了一上午Cassandra 3.10都没有装成功, 终于,鄙人一条 shutdown -p now 结束了FreeBSD,默默打开了CentOS ...

  2. ApplicationSettingsBase运用

    先建一个类继承于ApplicationSettingsBase using System; using System.ComponentModel; namespace Concert.Configu ...

  3. java数字加密算法

    数字加密在项目中时常会遇到,如手机号,身份证号信息等,下面小白将自己手写的数字加密算法分享给大家,可在项目中直接运用.加密规则,入参时传递一个字段时间戳 time:* 1.以字母代替数字,0-9分别为 ...

  4. 阶段3 1.Mybatis_10.JNDI扩展知识_3 补充-测试JNDI数据源的使用以及使用细节

    在webapp文件夹下新建目录META-INF 把context.xml文件复制过去. 拿资料里面的SqlMapConfig.xml文件 全部复制到项目的SqlMapConfig.xml里面来. ja ...

  5. 阶段3 1.Mybatis_02.Mybatis入门案例_3.mybatis注解开发和编写dao实现类的方式

    注解的用法 直接创建一个新的项目 下一步直接next 然后finish即可 把之前项目01里面的代码直接复制过来 复制到我们02的注解的工程中 把01项目导入的依赖也都粘贴过来 再把测试类复制过去 复 ...

  6. Jmeter 后置处理器--jp@gc - JSON/YAML Path Extractor & JSON Extractor

    后置处理器--jp@gc - JSON/YAML Path Extractor 1.需要下载插件,地址: 解压后把对应jar包放置对应的lib和lib/ext目录下,重启Jmeter: 2.在需要提取 ...

  7. MACBOOK蓝牙连接丢失恢复

    MACBOOK用户可能会碰到一个神奇而无奈的问题: 某些情况下,很多时候从睡眠状态回来,会发现蓝牙设备再也无法连接,包括蓝牙鼠标.键盘等等... 恢复方法一般是,重启或注销后重新登陆,然后所有工作现场 ...

  8. psp周总结02

      周日 周一 周二 周三 周四 周五 周六 所花时间 180 60 240 180 340 180 培训 代码量 186 65 157 86 200 200 博客量 1 1 了解的知识点 jsp页面 ...

  9. mysql: show full processlist 详解

    show full processlist 是显示用户正在运行的线程,需要注意的是,除了 root 用户能看到所有正在运行的线程外,其他用户都只能看到自己正在运行的线程,看不到其它用户正在运行的线程. ...

  10. 2019JAVA第一次編程总结

    2019第二周实验报告 Java实验报告 班级 计算机科学与技术二班 学号 20188442 姓名 吴怡君 完成时间 2019/9/7 评分等级 实验一 Java开发环境与简单Java程序 一. 实验 ...