re的元字符

import re

ret = re.findall("e..a", "Hermaeus") #"."是模糊表示一个字符
print(ret) ['erma'] ret = re.findall("^H..m", "Hermaeus") #"^"表示开头必须是某个字符
print(ret) ['Herm'] ret = re.findall("a..s$", "Hermaeus") #"$"表示结尾必须是某个字符
print(ret) ['aeus'] ret = re.findall("abc*", "abccccc") #贪婪匹配[0,+∞]
print(ret) ['abccccc'] ret = re.findall("abc+", "abccccc") #贪婪匹配[1,+∞]
print(ret) ['abccccc'] ret = re.findall("abc?", "abccccc") #惰性匹配[0,1]
print(ret) ['abc'] ret = re.findall("abc{1,3}", "abccccc") #贪婪匹配[1,3]
print(ret) ['abccc'] ret = re.findall("abc*?", "abccccc") #这样会让其变成惰性匹配
print(ret) ['ab']

字符集[ ]

即在字符集中任意匹配一个

import re

ret = re.findall("a[bc]", "abc")
print(ret) ['ab'] ret = re.findall("[a-z]", "ahfao")
print(ret) ['a', 'h', 'f', 'a', 'o'] ret = re.findall("[%$]", "ada%jf$") #在字符集里面除了:- ^ \以外都是普通字符
print(ret) ['%', '$'] ##" - " 取在这之间的
ret = re.findall("[1-9]", "1jkah1k2k3j")
print(ret) ['1', '1', '2', '3'] ##" ^ " 取反,即在这字符集里面没有的
ret = re.findall("[^ab]", "7ajkf2bfjab")
print(ret) ['7', 'j', 'k', 'f', '2', 'f', 'j'] ##" \ " 转义符
ret = re.findall("[\d]", "45dhaf2")
print(ret) ['4', '5', '2']

转义符

  • 反斜杠后边跟元字符去除特殊功能,比如\.
  • 反斜杠后边跟普通字符实现特殊功能,比如\d
  • \d匹配任何十进制数;它相当于类 [0-9]。
  • \D匹配任何非数字字符;它相当于类 [^0-9]。
  • \s匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
  • \S匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
  • \w匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。
  • \W匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
  • \b匹配一个特殊字符边界,比如空格 ,&,#等
import re
ret = re.findall(r"I\b", "I am LIST") ##添加"r",就变成了原生字符串,它表示把需要匹配的字符集直接交给模块处理
print(ret)

分组 ( )

import re
ret = re.search("(?P<id>\d{2})/(?P<name>\w{3})", "23/com") #"?P<id> 取名
print(ret) <_sre.SRE_Match object; span=(0, 6), match='23/com'> #返回一个对象 print(ret.group()) 23/com print(ret.group("id")) 23

|符号

import re

ret = re.search("(ab)|\d", "rabjk4fk") #二选一
print(ret)
print(ret.group())

re下的常用方法

import re
#findall()方法
#返回所有满足匹配条件的结果,放在列表里
re.findall('a','alvin yuan')
#search()方法
#函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以;通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。
re.search('a','alvin yuan').group()
#match()方法
#同search,不过尽在字符串开始处进行匹配
re.match('a','abc').group()
#split()方法
#先按'a'分割得到''和'bcd',在对''和'bcd'分别按'b'分割
ret=re.split('[ab]','abcd')
print(ret)#['', '', 'cd']
#sub()和subn()方法
#替代
ret=re.sub('\d','abc','alvin5yuan6',1)
print(ret)#alvinabcyuan6
#替代,且可以选择次数
ret=re.subn('\d','abc','alvin5yuan6')
print(ret)#('alvinabcyuanabc', 2)
#compile()方法
#对象赋予
obj=re.compile('\d{3}')
ret=obj.search('abc123eeee')
print(ret.group())#123
#finditer()方法
ret=re.finditer('\d','ds3sy4784a')
print(ret) #<callable_iterator object at 0x10195f940>
#返回迭代器
print(next(ret).group())
print(next(ret).group())

注意:

import re

ret=re.findall('www.(baidu|oldboy).com','www.oldboy.com')
print(ret)['oldboy'] #这是因为findall会优先把匹配结果组里内容返回,如果想要匹配结果,取消权限即可 ['oldboy'] ret=re.findall('www.(?:baidu|oldboy).com','www.oldboy.com')
print(ret) ['www.oldboy.com']

分组

在正则表达式中,可以对过滤到的字符串进行分组,分组使用圆括号的方式:

  1. group:和group(0)等价,返回的是整个满足条件的字符串
  2. groups:返回的是里面的子组,索引从1开始
  3. group(1):返回的是第一个子组,可以传入多个

代码实例:

import re
text = "apple price is $99,orange price is $10"
ret = re.search(r".*(\$\d+).*(\$\d+)",text)
print(ret.group())
print(ret.group(0))
print(ret.group(1))
print(ret.group(2))
print(ret.groups())
'''
result:
apple price is $99,orange price is $10
apple price is $99,orange price is $10
$99
$10
('$99', '$10')
'''

正则表达式和re模块的更多相关文章

  1. Python之正则表达式(re模块)

    本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...

  2. 【转】Python之正则表达式(re模块)

    [转]Python之正则表达式(re模块) 本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 参考文档 提示: ...

  3. 【Python爬虫】正则表达式与re模块

    正则表达式与re模块 阅读目录 在线正则表达式测试 常见匹配模式 re.match re.search re.findall re.compile 实战练习 在线正则表达式测试 http://tool ...

  4. Python与正则表达式[0] -> re 模块的正则表达式匹配

    正则表达式 / Regular Expression 目录 正则表达式模式 re 模块简介 使用正则表达式进行匹配 正则表达式RE(Regular Expression, Regexp, Regex) ...

  5. python 正则表达式re使用模块(match()、search()和compile())

    摘录 python核心编程 python的re模块允许多线程共享一个已编译的正则表达式对象,也支持命名子组.下表是常见的正则表达式属性: 函数/方法 描述 仅仅是re模块函数 compile(patt ...

  6. 正则表达式之re模块

    re模块一.什么是正则表达式与re模块?1.1 字符组1.2 元字符1.2.1 单个使用1.2.2 组合使用二.为什么要使用正则三.如何使用3.1 re模块的三种比较重要的方法3.1.1 findal ...

  7. python学习笔记(十)——正则表达式和re模块

    #正则表达式和re模块 # match(pattern, string,[flag]) #在字符串开始时进行匹配 # pattern 正则表达式 # string 要匹配的字符串 # [flag] 可 ...

  8. python正则表达式之re模块方法介绍

    python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...

  9. python中的正则表达式(re模块)

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

  10. pytho day6 <正则表达式、常用模块、反射>

    本节介绍: 一:正则表达式: 正则表达并不是python 独有的.在各个语言里都有该语法的介绍.正则表达是处理字符串的强大的处理工具.拥有自己的独特的 处理方法.和处理引擎.虽然性能没有python ...

随机推荐

  1. 每日分享!~ vue JavaScript中为什么可以读取到字符串的长度!(包装对象)

    首先需要知道什么是包装对象? 对象是JavaScript语言下最主要的数据类型,三种原始的值-----数值,字符串,布尔值,在一定条件下会自动的转为对象.也就是原始类型的包装对象: 也就是通过如下方式 ...

  2. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之八 || API项目整体搭建 6.3 异步泛型仓储+依赖注入初探

    代码已上传Github+Gitee,文末有地址 番外:在上文中,也是遇到了大家见仁见智的评论和反对,嗯~说实话,积极性稍微受到了一丢丢的打击,不过还好,还是有很多很多很多人的赞同的,所以会一直坚持下去 ...

  3. Vue.js-07:第七章 - Vue 实例的生命周期

    一.前言  在之前的 Vue 学习中,我们在使用 Vue 时,都会创建一个 Vue 的实例,而每个 Vue 实例在被创建时都要经过一系列的初始化过程.例如,需要设置数据监听.编译模板.将实例挂载到 D ...

  4. UmengShareDemo【友盟分享SDK集成,基于V6.9.3版本】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里简单记录下友盟分享SDK集成的步骤. 如果想要使用自定义分享对话框实现,请参考<ShareDialogDemo[分享对话框 ...

  5. 推荐一款好用的任务定时器:Quartz

    前言 官网:https://www.quartz-scheduler.net/ 一款开源的任务定时器. 日常有很多地方需要定时刷新的,比如微信开发中的微信API token,或者定时清理一下缓存数据等 ...

  6. 数据结构系列(2)之 AVL 树

    本文将主要讲解平衡二叉树中的 AVL 树,其中将重点讲解二叉树的重平衡方法,即左旋和右旋,以及 3+4 重构:这些方法都是后面要讲的 B 树,红黑树等 BBST 的重要基础:此外在看本文之前最好先看一 ...

  7. 【转载】java final 关键字的几种用法

    原文链接点这里,感谢博主分享 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构 ...

  8. 前端知识复习: JS选中变色

    前端知识复习:JS选中变色 上篇文章 :前端知识复习:Html DIV 图文混排(文字放在图片下边) Js选中图片效果 <!DOCTYPE html> <html xmlns=&qu ...

  9. MVC bootstrap-table显示数据时显示No matching records found

    问题:bootstrap-table加载数据不显示 @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layou ...

  10. 前端_Bootstrap简单使用

    首先说一下简单使用方法: 1.首先上官网下载Bootstrap(就是一些js文件和一些css文件) ,网址: https://v3.bootcss.com/getting-started/#downl ...