python学习:re模块
常用正则表达式符号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行
'^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r "^a" , "\nabc\neee" ,flags = re.MULTILINE)
'$' 匹配字符结尾,或e.search( "foo$" , "bfoo\nsdfsf" ,flags = re.MULTILINE).group()也可以
'*' 匹配 * 号前的字符 0 次或多次,re.findall( "ab*" , "cabb3abcbbac" ) 结果为[ 'abb' , 'ab' , 'a' ]
'+' 匹配前一个字符 1 次或多次,re.findall( "ab+" , "ab+cd+abb+bba" ) 结果[ 'ab' , 'abb' ]
'?' 匹配前一个字符 1 次或 0 次
'{m}' 匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次,re.findall( "ab{1,3}" , "abb abc abbcbbb" ) 结果 'abb' , 'ab' , 'abb' ]
'|' 匹配|左或|右的字符,re.search( "abc|ABC" , "ABCBabcCD" ).group() 结果 'ABC'
'(...)' 分组匹配,re.search( "(abc){2}a(123|456)c" , "abcabca456c" ).group() 结果 abcabca456c
'\A' 只从字符开头匹配,re.search( "\Aabc" , "alexabc" ) 是匹配不到的
'\Z' 匹配字符结尾,同$
'\d' 匹配数字 0 - 9
'\D' 匹配非数字
'\w' 匹配[A - Za - z0 - 9 ]
'\W' 匹配非[A - Za - z0 - 9 ]
's' 匹配空白字符、\t、\n、\r , re.search( "\s+" , "ab\tc1\n3" ).group() 结果 '\t'
'(?P<name>...)' 分组匹配 re.search( "(?P<province>[0-9]{4})(?P<city>[0-9]{2})(?P<birthday>[0-9]{4})" , "371481199306143242" ).groupdict( "city" ) 结果{ 'province' : '3714' , 'city' : '81' , 'birthday' : '1993' }
|
最常用的匹配语法
1
2
3
4
5
|
re.match 从头开始匹配
re.search 匹配包含
re.findall 把所有匹配到的字符放到以列表中的元素返回
re.splitall 以匹配到的字符当做列表分隔符
re.sub 匹配字符并替换
|
反斜杠的困扰
与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\\\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r"\\"表示。同样,匹配一个数字的"\\d"可以写成r"\d"。有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直观。
仅需轻轻知道的几个匹配模式
1
2
3
|
re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
M(MULTILINE): 多行模式,改变 '^' 和 '$' 的行为(参见上图)
S(DOTALL): 点任意匹配模式,改变 '.' 的行为
|
转载于:https://www.cnblogs.com/alstonlee/p/6420107.html
python学习:re模块相关推荐
- Python学习--Selenium模块
1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台 转载于:https://www.cnblo ...
- python学习 - copy模块的浅复制(copy)与深复制(deepcopy)
python学习 - copy模块的浅复制(copy)与深复制(deepcopy) 简介 copy.copy()详解 copy.deepcopy()详解 简介 在使用列表或者字典进行传递参数的时候,可 ...
- 【Python】Python学习----第一模块笔记
1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...
- Python学习:模块
本文来自:入门指南 开胃菜参考:开胃菜 使用Python解释器:使用Python解释器 本文对Python的简介:Python简介 Python流程介绍:深入Python流程 Python数据结构:P ...
- Python学习 - 常用模块(二)
目录 一. 常用模块 - hashlib 二. 常用模块 - hmac 三. 常用模块 - logging 四. 常用模块 - re 五. 常用模块 - requests 六. 常用模块 - para ...
- Python学习笔记-模块介绍
(一)-模块概念和基本使用 python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题.模块我们就可以理解为lib库,如果需要使用某个 ...
- 大智慧数据文件python_马克的Python学习笔记#模块和包 3
让目录或者zip文件成为可以运行的脚本 我们的程序已经从一个简单的脚本进化为一个涉及多个文件的应用.我们希望能有某种简单的方式来让用户运行这个程序 如果应用程序已经进化为由多个文件组成的"庞 ...
- python学习之模块--模块(五)
5.10 包 5.10.1 包的概念 [官网解释] Packages are a way of structuring Python's module namespace by using " ...
- py导入包异常跳出_马克的Python学习笔记#模块和包
把模块按层次结构组织成包 模块和包是任何大型项目的核心,就连Python安装程序它本身也是一个包.创建一个软件包结构是非常简单的,我们只要把代码按照我们所希望的方式在文件系统上进行组织并且确保每个目录 ...
- Python学习之模块学习
模块是最高级别的程序组织单元.每一份单独的Python代码文件(后缀名是.py的文件)就是一个单独的模块. 模块相关的常用语句有三个: 1)import语句 import -as,比如我们觉得impo ...
最新文章
- 【Codeforces】1104C Grid game (变异的俄罗斯方块)
- 现实版“神笔马良”!“90后”小伙把贫困村画成网红景点,网友:一个人带动整个村GDP...
- 用VS Code直接浏览GitHub代码 | 12.1K星
- C语言//注释使下一行代码失效
- 最全的B端产品经理干货知识(2)
- 【vim小记】vim的复制粘贴(包括系统剪贴板)
- hdu 3371 Connect the Cities(prim算法)
- signature=995eb8e443ef674d51fa76dabc7ac89c,我國7-8歲學童動作協調能力之初探
- 2010年是一道坎,也是一座桥
- C#读取CAD文件DXF
- Windows Server 2016 身份管理 (MCSA 认证 70-742)-李海园-专题视频课程
- Microsoft Office下载链接
- IntelliJ IDEA更换主题样式分享
- WebDriverException: Message: unknown error: cannot find Chrome binary(ChromeDriver及谷歌官网下载地址)
- 机器学习笔记(通俗易懂)---监督学习介绍:分类与回归,泛化~过拟合与欠拟合(2)
- 生产环境CPU飙高问题解决,记一次完整解决过程
- 修改服务器后打印机,怎样改打印机服务器的ip地址
- 网页如何防篡改?可以选择快卫士
- datastage作业hang住
- 不是每个音乐节都值得狂欢,抖音就不一样
热门文章
- 液压支架销轴力学计算分析研究_基于RFID射频精准定位的智能开采研究与应用...
- android移动应用基础教程源代码,Android移动应用基础教程 【程序活动单元Activity】...
- webase crud查看所有表_Laravel-Gii 可视化代码生成工具 CRUD +GUI
- Linux/Unix/Mac 系统GIT密码存储
- JavaScript学习随记——数组一
- Java局部变量一定要赋初值
- 操作系统上机作业--根据莱布尼兹级数计算PI(2)(多线程)
- 黑色背景下,计算照片白色的区域面积和周长
- UVA 116——Unidirectional TSP
- LeetCode (合集)合并链表和数组