python正则表达式

yuluodisuihe 2018-05-07 原文

python正则表达式

一、元字符

  .  匹配任意字符(不包括换行符)
  ^  匹配开始位置,多行模式下匹配每一行开始
  $  匹配结果位置,多行模式下匹配每一行结尾
  *  匹配前一个元字符0到多次
  +  匹配前一个元字符1到多次
  ? 匹配前一个元字符0到1次
  {m,n} 匹配前一个元字符m到n此
  |  或,匹配|左右表达式任意一个
  [] 字符集,对应位置可以是字符集中的任意一个
  () 分组,从左到右每遇到一个编号+1
  \d 匹配数字
  \D 匹配非数字
  \w 匹配字母和数字
  \W 匹配非英文字母和数字
  \s 匹配空白字符
 
  特殊分组:原本分组只是从左到右编号+1,特殊分组可对分组添加别名
  (?P<name>) 未分组添加别名name
  (?P=name)  在使用分组别名对分组进行匹配

 

二、模式

  1、忽略大小写  I

1 a = 'Hello Python'
2 regex = re.compile('hello world',re.I)
3 regex.match(a) 

  2、多行模式  M

1 a = ''' sfasdf
2 ghdfg
3 sgsdfg'''
4 regex = re.compile('^ s',re.M)
5 regex.match(a).group()

三、re内置函数

   1、compile(pattern,flags=0)    

      pattern:用来匹配的字符串
      flags:定义匹配使用的模式。如re.I忽略大小写
      作用:编译正则表达式模式,返回一个对象模式(常用的表达式使用其编译后可提高效率)。

   2、match(parttern,string,flags=0)

     string:被匹配的字符串
     作用:从被匹配的字符串左边第一位开始匹配,匹配成功返回match object对象,匹配失败则返回None
     注:该方法并非完全匹配,要想实现完全匹配的效果可在用来匹配的字符串后加’$’   

1 import re
2 a = 'Hello world'
3 re.match(r'hello',a,re.I)      #Hello

   3、search(parttern,string,flags=0)

     作用:在string进行查找相匹配的字符串,匹配成功返回match object对象,匹配失败返回None
     注:1.该函数要实现match函数的功能可在匹配字符串前加’^’
            2.该函数要实现完全匹配可在字符串前后分别加’^’,’$’

1 import re
2 a = 'hello world'
3 re.search(r'^ello world$',a)

     注:对match object提供的方法(得到匹配成功返回的数据)
        1、group() :返回被匹配的字符串,可通过输入组号输出对应的内容
        2、groups():以元组形式返回匹配到的所有内容
        2、start() :返回匹配开始的位置
        3、end()   :返回匹配结束的位置
        4、span()  :返回一个元组(匹配开始、结束的位置)

 

   4、findall(pattern,string,flags=0)

     作用:遍历匹配,以列表的形式返回所有能够被匹配的字符串

1 import re
2 a = 'python2 Python3'
3 regex = re.compile(r'\d')
4 regex.findall(a)                 #['2','3']  

   5、finditer(parttern,string,flags=0)

     作用:作用与findall相同,但返回的为迭代器
       

   6、split(pattern,string[,maxsplit])

     maxsplit:最大分割数,不指定将全部分割
     作用:在string中匹配与pattern相同的字符,对string进行分割
    

   7、sub(pattern,repl,string,count)

     repl:需要替换的字符串
     count:替换个数,默认为0,即每个都替换
     作用:使用repl替换在string中匹配到pattern的字符,并返回被替换后的字符串

1 import re
2 a = 'hello world'
3 re.sub(r'w\D+','python',a)     #hello python

   8.subn(pattern,repl,string,count=0,flags=0)

     作用:作用与sub类似,会返回一个元组,即替换后的字符串及替换的次数。
    

发表于 2018-05-07 15:33 雨落滴碎荷 阅读() 评论() 编辑 收藏

 

版权声明:本文为yuluodisuihe原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/yuluodisuihe/p/8650057.html

python正则表达式的更多相关文章

  1. python tornado TCPserver异步协程实例

    项目所用知识点 tornado socket tcpserver 协程 异步 tornado tcpserve […]...

  2. python官方推荐的各阶段学习书籍

    Python学习交流群:463024091,群内每天分享干货,包括最新的python企业案例学习资料和零基础入 […]...

  3. Python 视频转字符动画 – 进阶

    这篇文章是 视频转字符动画-Python-60行代码 的后续,如果感兴趣,请先看看它。 0. 话说在前头 最新 […]...

  4. VSCode 配置 Python 开发环境

    一、环境准备 首先需要先安装好 Python 和 VSCode, 下载地址如下 VSCode Python 二 […]...

  5. python – json模块使用 / 快速入门

    json基本格式 """ json格式 -> [{}, {}]: [{ "name": "Bob", " […]...

  6. centos8 安装python

    镜像:CentOS Linux release 8.5.0-13python下载地址:Python Source Releases | Python.org选择所需要的版本,我这里最新版本是3.10.0第一步:安装依赖包yum in...

  7. scrapy爬取图片并自定义图片名字

    scrapy爬取图片并自定义图片名字 1   前言   Scrapy使用ImagesPipeline类中函数g […]...

  8. Django ORM 引发的数据库 N+1 性能问题

    背景描述 最近在使用 Django 时,发现当调用 api 后,在数据库同一个进程下的事务中,出现了大量的数据 […]...

随机推荐

  1. ps新手秒变大师必备的Ps插件全在这!

    作为设计师Photoshop可谓神器,不论你是何种设计师多多少少都会用到它。随着时代的发展,对效率越来越注重, […]...

  2. 【数据结构】28、判断链表是否有环

      因为最近小米电话面试被问到如何判断一个链表是否有环,那今天正好实现以下这个算法 1.链表 package […]...

  3. MongoDB系列六(聚合).

     一、概念     使用聚合框架可以对集合中的文档进行变换和组合。基本上,可以用多个构件创建一个管道(pipe […]...

  4. NGUI_PopupList

    八、PopuList下拉菜单   1、使用Populist的规律: (1)、有一系列选项需要玩家做出选择,这些 […]...

  5. Spring-06 AOP

    Spring-06 AOP AOP 1.简介 AOP(Aspect Oriented Programming) […]...

  6. 小米手机通过USB连接MAC电脑 – 子钦加油

    小米手机通过USB连接MAC电脑   1、手机端拿到“开发者权限”后,打开“USB调试”开关并将USB的用途设 […]...

  7. 生活与爱情,

    有点忧郁 有些犹豫 编码我很喜欢 便向着方向努力   每天都在挣扎 却越陷越深 想摆脱这一切 可是没有摇钱树 […]...

  8. 开始投资理财

    这是一本改变金钱观念的书。它主要观点是,让人们不要再重复“工作-赚钱-花钱-努力工作”的老鼠赛跑,进入投资理财 […]...

展开目录

目录导航