python re模块与正则表达式

首先要先继承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模块与正则表达式的更多相关文章
- 19 Python 正则模块和正则表达式
什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...
- python——re模块(正则表达式)
re 模块的使用: 1.使用compile()函数编译一个parttern对象, 例如:parttern=re.compile(r'\d+') 2.通过pattern对象提供的一系列属相和方法,对文本 ...
- Python re模块与正则表达式的运用
re模块 永远不要起一个py文件的名字,这个名字和你已知的模块同名 查找 findall(): 匹配所有 每一项都是列表中的一个元素 语法 : findall(正则判断条件,要判断字符 ...
- python常用模块二正则表达式
正则表达式 常用的正则元字符 # =================================匹配模式================================= #一对一的匹配 # 'h ...
- python——re模块
python--re模块 一 正则表达式的作用 1.给字符串进行模糊匹配, 2.对象就是字符串 二 字符匹配(普通字符.元字符) 普通字符:数字字符和英文字母和自身匹配 2.元字符:. ^ $ * + ...
- python re 模块和基础正则表达式
1.迭代器:对象在其内部实现了iter(),__iter__()方法,可以用next方法实现自我遍历. 二.python正则表达式 1.python通过re模块支持正则表达式 2.查看当前系统有哪些p ...
- Python::re 模块 -- 在Python中使用正则表达式
前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...
- python常用模块(1):collections模块和re模块(正则表达式详解)
从今天开始我们就要开始学习python的模块,今天先介绍两个常用模块collections和re模块.还有非常重要的正则表达式,今天学习的正则表达式需要记忆的东西非常多,希望大家可以认真记忆.按常理来 ...
- Python数据分析学习-re正则表达式模块
正则表达式 为高级的文本模式匹配.抽取.与/或文本形式的搜索和替换功能提供了基础.简单地说,正则表达式(简称为 regex)是一些由字符和特殊符号组成的字符串,它们描述了模式的重复或者表述多个字符,于 ...
随机推荐
- python 前端 css
CSS(Cascading Style Sheet,层叠样式表) 是一种用来表现HTML或XML等文件样式的计算机语言. 作用:是用来美化HTML标签的,相当于给页面化妆. 每个css 都是有两部分组 ...
- java.math.*;(一)
package com.test; /* Math类: java.lang.Math类中包含基本的数字操作,如指数.对数.平方根和三角函数. java.math是一个包,提供用于执行任意精度整数(Bi ...
- linux下安装mysql解决乱码、时间差、表的大小写问题
编辑vi /etc/mysql/my.cnf,有的则是:/etc/my.cnf,加入 [client]default-character-set=utf8mb4 [mysql]default-char ...
- 几种数据格式的处理 - Python
1. CSV数据 import csv csvfile = open('data_text.csv','rb') reader = csv.reader(csvfile) # 返回数据为列表类型 # ...
- java-ArrayList中去重复字符串或重复对象、LinkedList集合、泛型、增强for、静态导入、可变参数、asList()方法、集合嵌套
1.去除ArrayList中重复字符串元素方式 * A:案例演示 * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) * 思路:创建新集合方式 /** * A:案例演示 * 需求 ...
- Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决
环境:Win7 64位,python3.6.0 我在准备用pip装东西的时候,在cmd里先更新了一下pip,大概是9.0.1更新到9.0. 尝试更新pip命令: pip install --upgra ...
- windows添加永久静态路由
添加路由最好在命令行管理员模式下操作 添加临时路由命令,重启后失效 route add 172.16.1.0 mask 255.255.255.0 10.0.10.19 其中,172.16.1.0 是 ...
- CNN+BLSTM+CTC的验证码识别从训练到部署
项目地址:https://github.com/kerlomz/captcha_trainer 1. 前言 本项目适用于Python3.6,GPU>=NVIDIA GTX1050Ti,原mast ...
- kafka原理和实践(四)spring-kafka消费者源码
系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...
- Linux eclipse 编译C++
1.软件安装 2.新建C++工程 3.输入新建文件夹的名字 4.新建main.cpp文件 5.编辑main.cpp #include<iostream> int main(){ std:: ...