首先要先继承re模块: import re

re.findall() 方法 # 返回值为列表

\w 表示一个字符,为数字,字母,下滑线之一,  \W匹配任意非数字,字母,下划线

print(re.findall('\w3\w','abc3dafg375983_'))    #   输出结果为: ['c3d', 'g37', '83_']

print(re.findall('2\W','abc2_ 2 3| 2|'))   #    输出结果为: ['2 ', '2|']

\s 表示匹配 任意空白字符(\t  \n  \r  \f 分别表示:水平制表符,移动到下一个tab的位置; 换行符; 回车; 换页)  \S匹配任意 非空字符

print(re.findall('2\s','abc2\f_ 2 3| 2\t'))   #  输出结果为 ['2\x0c', '2 ', '2\t'];

若将代码改为: print(re.findall('2\s','abc2\\f_ 2 3| 2\\t')) ,则 输出结果为: ['2 ']

\d 匹配任意数字(0-9),  \D匹配任意非数字

print(re.findall('\d','abc3dafg375983_'))  #输出结果为: ['3', '3', '7', '5', '9', '8', '3']

print(re.findall('\D','abc3dafg375983_'))  #输出结果为: ['a', 'b', 'c', 'd', 'a', 'f', 'g', '_']

\Ax 匹配字符串开始(x表示需要找的字符串),如字符串是以要找的字符串开头,则返回这个字符串,若不是则结束匹配

print(re.findall('\Aa','abc3dafg375983_'))  #输出结果为: ['a']

x\Z 匹配字符串结束(x表示需要找的字符串)

print(re.findall('3\Z','abc3dafg375983_'))  #输出结果为: [ ] 表示空列表,表示字符串不是以3结尾

^  字符串开头匹配(判段开头是否为要找的字符串,并返回值,若不是,则结束寻找)

$  从末尾开始匹配(判段结尾是否为要找的字符串,并返回值,若不是,则结束寻找)

print(re.findall('^c3','c3abc3dafg37c3983_'))     输出结果为: ['c3']

print(re.findall('c3$','c3abc3dafg37c398c3_'))  输出结果为: [ ]

. :匹配除换行符之外的任意字符, 加上flag:re.DOTALL 即可匹配换行符

print(re.findall('a.c','abc a c a|ca#ckfaabbc'))  输出结果为:['abc', 'a c', 'a|c', 'a#c']

[...] :表示匹配一组字符中的一个字符

print(re.findall('[b.]','abc a c a|ca#ckfa.abbc'))  输出结果为: ['b', '.', 'b', 'b']

print(re.findall('a[a-zA-Z]c','aBcfagchka|c',re.DOTALL))  输出结果为: ['aBc', 'agc']

重复匹配:

? :表示在?左边的字符出现0次或1次

print(re.findall('ab?','a ab abb abc acf b ab a21b'))  #  在此情况下表示 , b出现一次或0次的字符串,结果为: ['a', 'ab', 'ab', 'ab', 'a', 'ab', 'a']

* :0次到无穷多次

print(re.findall('ab*','aababbaaabbb'))  #输出结果为: ['a', 'ab', 'abb', 'a', 'a', 'abbb']

+ :1次或无穷多次

print(re.findall('ab+','a ab abb bb abbb aaabbb'))  # 输出结果为: ['ab', 'abb', 'abbb', 'abbb']

.* :贪婪匹配,尽可能多的吞噬字符

print(re.findall('a.*c','aasfakfipgld csagsdpp cas'))   # 输出结果为: ['aasfakfipgld csagsdpp c']

.*? : 非贪婪匹配,尽可能少的吞噬字符

print(re.findall('a.*?c','aasfakfipgld csagsdpp cas'))   # 输出结果为: ['aasfakfipgldc', 'agsdpp c']

| :表示或者

print(re.findall('yang|huang','yang is a boy huang is a girl'))  #输出结果为: ['yang', 'huang']

() : 表示分组,默认情况下只保留括号内的数据, 在括号内加入?:则会保留完整的

print(re.findall('email.:\w{3,}@\w+\.(?:cn|com|edu|org)','email1:378533872@qq.com email2:333312312@163.com eamil3:alexsb123@gmail.com'))

输出结果为: ['378533872@qq.cn', '333312312@163.com', 'alexsb123@gmail.com']

re.I   #  忽略大小写

print(re.findall('alex','aLex is Alex is alExandaleX',re.I))  # 输出结果为:['aLex', 'Alex', 'alEx', 'aleX']

re.M  #忽略换行符

msg="""

ahfquqfqioiyang

sfahsifpofayang

fdi352526yang

# """

print(re.findall('yang$',msg,re.M))    #  输出结果为: ['yang','yang','yang']

re.search()方法   找到一个即停止

print(re.search('alex','alex is alex is alex'))  #  输出结果为: <_sre.SRE_Match object; span=(0, 4), match='alex'>

re.match()方法  找开头,没有找到则结束

print(re.match('alex','alex is alex is alex'))  #  输出结果为: <_sre.SRE_Match object; span=(0, 4), match='alex'>

从上述代码可以看出search方法与match方法返回结果比较相似

小练习:找到以下字符串中所有的数字(正数,负数,小数):

msg="1-2*(60+(-40.35/5)-(-4*3))"

代码为:
print(re.findall('\D?(-?\d+\.?\d*)',msg))
结果为:
['1', '2', '60', '-40.35', '5', '-4', '3']
												

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

  1. 19 Python 正则模块和正则表达式

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

  2. python——re模块(正则表达式)

    re 模块的使用: 1.使用compile()函数编译一个parttern对象, 例如:parttern=re.compile(r'\d+') 2.通过pattern对象提供的一系列属相和方法,对文本 ...

  3. Python re模块与正则表达式的运用

    re模块 永远不要起一个py文件的名字,这个名字和你已知的模块同名 查找 findall():     匹配所有   每一项都是列表中的一个元素 语法 :   findall(正则判断条件,要判断字符 ...

  4. python常用模块二正则表达式

    正则表达式 常用的正则元字符 # =================================匹配模式================================= #一对一的匹配 # 'h ...

  5. python——re模块

    python--re模块 一 正则表达式的作用 1.给字符串进行模糊匹配, 2.对象就是字符串 二 字符匹配(普通字符.元字符) 普通字符:数字字符和英文字母和自身匹配 2.元字符:. ^ $ * + ...

  6. python re 模块和基础正则表达式

    1.迭代器:对象在其内部实现了iter(),__iter__()方法,可以用next方法实现自我遍历. 二.python正则表达式 1.python通过re模块支持正则表达式 2.查看当前系统有哪些p ...

  7. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  8. python常用模块(1):collections模块和re模块(正则表达式详解)

    从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...

  9. Python数据分析学习-re正则表达式模块

    正则表达式 为高级的文本模式匹配.抽取.与/或文本形式的搜索和替换功能提供了基础.简单地说,正则表达式(简称为 regex)是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,于 ...

随机推荐

  1. leetcode 152. Maximum Product Subarry

    这道题求的是乘积的最大值的,那么依照之前的和的最大值类似的做法的,乘积的最大值可能是在最大值*当前值和最小值*当前值和当前值三者之间取得的最大值的,那么使用两个变量来保存每一步的最大最小值的. cla ...

  2. Apache ZooKeeper 服务启动源码解释

    转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper-code/ 本文首先讲解了 Apache ZooKeeper 服 ...

  3. 在html中做表格以及给表格设置高宽字体居中和表格线的粗细

    今天学习了如何用HTML在网页上做表格,对于我这种横列部分的属实有点麻烦,不过在看着表格合并单过格的时候我把整个表格看做代码就容易多了. 对于今天的作业让我学习了更多的代码,对于代码的应用希望更加熟练 ...

  4. 添加一个pv到vg后,误删新加入的pv,报 pv * not found or rejected by a filter

    问题如下 将某一pv加入vg vgextend cl /dev/xvdb1 然后进入fdisk将xvdb1分区删掉,重新创建pv 使用lvdisplay报警告 [root@localhost ~]# ...

  5. Python调用ffpmeg和ffprobe处理视频文件

    需求: 运营有若干批次的视频.有上千个,视频文件,有mp4格式的,有ts格式的 现在有需要去掉视频文件片头和片尾的批量操作需求. 比如 文件夹A下面的视频去掉片尾10秒 文件夹B下面的视频去掉片头6秒 ...

  6. 从gitlab或者github采用git clone和download zip的区别

    不要做伸手党啊大兄弟,这种问题自己稍加理解就知道答案了,实在想不到就上谷歌搜一下嘛,比如这个:git - Github: difference between Clone in desktop and ...

  7. 用变量替换指定的字符串,sed: -e 表达式 #1, 字符 29: “s”的未知选项

    在shell脚本里,使用sed,然后用变量替换指定的字符串,一直出现这个错误:但是单独运行在外面可以 把分隔符/替换成#就可以: sed "s#revision=.*#revision=$s ...

  8. 1.2.1 Excel如何从身份证号中提取日期

    在对应的单元格中我们输入公式: =MID(B3,7,4)&"年"&MID(B3,11,2)&"月"&MID(B3,13,2)&a ...

  9. 2.2 如何在Visio中写上、下角标

    快捷键:下标[“Ctrl”+ “=”] 上标[“Ctrl”+“shift”+“=”]

  10. socket资源

    http://www.360doc.com/content/13/1231/16/14919052_341525862.shtml Linux下基于socket多线程并发通信的实现 https://w ...