python学习笔记----正则表达式
正则:
regular expression
常用的场景:
#正则的包
>>> import re
#match:开头匹配,匹配到,返回一个匹配对象,否则返回None
>>> re.match("abc","abcd")
<_sre.SRE_Match object; span=(0, 3), match='abc'>#返回的时一个匹配对象,要想查看匹配的内容用group(),search也是
>>> result =re.match(r"\d","dbja1")
>>> type(result)
<class 'NoneType'>
>>>
#\d(digit):匹配所有的数字
>>> re.match("\d","1abcd")
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> re.match("\\d","1abcd")
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> re.match(r"\d","1abcd")#加r,防止在文件里转译出错
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>>
#search:从任意位置找到第一个,只返回第一个匹配到的
>>> re.search(r"\d","acb3ad")
<_sre.SRE_Match object; span=(3, 4), match='3'>
>>>
>>> re.search(r"\d","acb3ad3l3sd4")
<_sre.SRE_Match object; span=(3, 4), match='3'>
>>>
#findall:找到所有匹配的内容放到一个列表里,匹配不到时返回一个空的列表。
>>> re.findall(r"\d","a1b2c3")
['1', '2', '3']
>>>
>>> re.findall(r"\d","abc")
[]
>>>
>>> result =re.findall(r"\d","a1b2c3")
>>> result
['1', '2', '3']
>>>
#想查看匹配到的内容用group()
>>> result =re.match(r"\d","2bg")
>>> result.group()
'2'
>>> result
<_sre.SRE_Match object; span=(0, 1), match='2'>
>>> result =re.search(r"\d","d2bg")
>>> result
<_sre.SRE_Match object; span=(1, 2), match='2'>
>>> result.group()
'2'
>>> result =re.search(r"\d","dbg")
>>> result
>>> result.group()#注意:没有匹配到内容时不能用group
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>>
#compile编译正则表达式,存到一个变量里方便复用
>>> pattern =re.compile(r"\d")
>>> type(pattern)
<class '_sre.SRE_Pattern'>
>>> pattern.match("1ab")
<_sre.SRE_Match object; span=(0, 1), match='1'>
>>> pattern.search("dd1ab")
<_sre.SRE_Match object; span=(2, 3), match='1'>
>>> pattern.search("dd1ab").group()
'1'
>>>
请输入一些内容:I am ok!
>>> if re.search(r"ok",s):
... print(True)
... else:
... print(False)
...
True
请输入一些内容:aaaaa
>>> if re.search(r"ok",s):
... print(True)
... else:
... print(False)
...
False
'3'
>>> re.search(r"\D","rw3e").group()
'r'
>>>
'a'
>>> re.search(r"\w"," a").group()
'a'
>>> re.search(r"\w"," 1").group()
'1'
>>> re.search(r"\W","_ 1").group()
' '
>>> re.search(r"\W","_").group()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> re.search(r"\W","@").group()
'@'
>>> re.search(r"\W","!!@").group()
'!'
>>>
'\t'
>>> re.search(r"\s"," ").group()
' '
>>> re.search(r"\S"," ! ").group()
'!'
>>>
'123'
>>>
'\r\t\n '
>>> re.search(r"\s+?","\r\t\n 1").group()#?,抑制贪婪性,尽可能少的匹配
'\r'
>>>
''
>>> re.search(r"\d","we333").group()
'3'
>>>
'123'
>>> re.search(r"\d{1,3}","12 123 34").group()
'12'
>>>
'1'
>>> re.search(r"\d?","dd123a").group()
''
>>>
['', '', '2', '1', '2', '3', '', '']
>>>
'a1b'
>>>
'a1 db 123b'
>>> re.search(r"a.*?b","a1 db 123b").group()
'a1 db'
>>>
\w 匹配字母数字及下划线 \W 匹配f非字母数字下划线 \s 匹配任意空白字符,等价于[\t\n\r\f] \S 匹配任意非空字符 \d 匹配任意数字 \D 匹配任意非数字 \A 匹配字符串开始 \Z 匹配字符串结束,如果存在换行,只匹配换行前的结束字符串 \z 匹配字符串结束 \G 匹配最后匹配完成的位置 \n 匹配一个换行符 \t 匹配一个制表符 ^ 匹配字符串的开头 $ 匹配字符串的末尾 . 匹配任意字符,除了换行符,re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符 [....] 用来表示一组字符,单独列出:[amk]匹配a,m或k [^...] 不在[]中的字符:[^abc]匹配除了a,b,c之外的字符 * 匹配0个或多个的表达式 + 匹配1个或者多个的表达式 ? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式 {n} 精确匹配n前面的表示 {m,m} 匹配n到m次由前面的正则表达式定义片段,贪婪模式 a|b 匹配a或者b () 匹配括号内的表达式,也表示一个组
python正则表达式中的特殊字符:
^ 表示匹配的字符必须在最前边
$ 表示匹配的字符必须在最后边
* 匹配* 前面的字符0次或n次
+ 匹配+ 前面的字符1次或n次
? 匹配?前面的字符0次或1次
. (小数点)匹配除换行符外的所有字符
(x) 匹配x并记录匹配的值
x|y 匹配x或者y
{n} 这里n是一个正整数。匹配前面的n个字符
{n,} 这里n是一个正整数。匹配至少n个前面的字符
{n,m} 这里n和m都是正整数。匹配至少n个、最多m个前面的字符
[xyz] 字符列表,匹配表中的任一字符,可以通过连接字符 - 指出字符范围,如 [a-z] 表示所有小写字符
[b] 匹配一个空格
b 匹配一个单词的分界线,比如一个空格
B 匹配一个单词的非分界线
re模块匹配规则(re.match函数的第三个参数):
re.IGNORECASE 忽略文中的大小写
re.LOCALE 处理字符集本地化
re.MULTILINE 是否支持多行匹配
re.DOTALL 匹配一些特殊标记,例如使用.匹配\n等字符
re.VERBOSE 忽略正则表达式中的空格或者换行等字符
re.UNICODE 使用Unicode编码
python学习笔记----正则表达式的更多相关文章
- [Python学习笔记]正则表达式总结
常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...
- Python学习笔记——正则表达式入门
# 本文对正则知识不做详细解释,仅作入门级的正则知识目录. 正则表达式的强大早有耳闻,大一时参加一次选拔考试,题目就是用做个HTML解析器,正则的优势表现得淋漓尽致.题外话不多讲,直接上干货: 1. ...
- python学习笔记——正则表达式regex
1 概述 1.1 定义 本质是由一系列字符和特殊符号组成的字串,用来表示一定规则的某一类字符串. 1.2 特点 正则表达式是一个独立的技术,其在多种编程语言中使用. 在python语言中的正则表达式模 ...
- Python学习笔记——正则表达式
今天把之前学的正则表达式好好总结总结. 一.元字符 . : .表示可以匹配任意一个字符 \d : \d表示可以匹配任意一个数字 \D : \D表示可以匹配任意一个非数字 \s : \s表示 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
- Python 学习笔记(上)
Python 学习笔记(上) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(上) 基础知识 基本输入输出 模 ...
随机推荐
- robotframework之上传功能
上传功能,分为上传图片以及上传文件 1.上传文件 A)上传文件的html标签为input类型,可以直接输入文本中input文件路径,可以省略点击[上传文件]这一步骤 B)直接输入使用的关键词为:cho ...
- 第五章Bookstrap
响应式原理: @media screen and (min-width:300px) and (max-width:500px) { /* CSS 代码 */ } #代表页面宽度大于300px和小雨5 ...
- 咱家自己的vim配置
" 四个空格设置 set tabstop=4 set softtabstop=4 set shiftwidth=4 set autoindent set smartindent set ex ...
- 利用redis List队列简单实现秒杀 PHP代码实现
一 生产者producer部分 --------------------------------producer 部分注释--------------------------------------- ...
- E4A 与JS交互事件无反应
今天碰到一个问题,E4A与JS的交互,调用JS函数后,事件没有任何反应,给JS赋值,会看到浏览框中有内容显示,但是事件为什么就没反应呢. 把官方的例程打开编译试了也不行. 后来在群中问了,原来是这里设 ...
- 联想扬天3900c电脑BIOS设置U盘启动图文教程
有联想扬天3900c的用户反映说,制作好U大侠U盘后,按快捷键却识别不到U盘,不能进行U盘启动,这是怎么回事呢?其实这是BIOS设置的问题,下面U大侠教大家如何对联想扬天3900c电脑进行BIOS设置 ...
- 用openssl为WEB服务器生成证书(自签名CA证书,服务器证书)
用openssl为WEB服务器生成证书(自签名CA证书,服务器证书) 来源: https://www.cnblogs.com/osnosn/p/10608455.html 来自osnosn的博客 写于 ...
- 使用COM打开Excel文档注意事项
本文主要讲解程序中打开Excel文档,读写Excel文档可以参照前章: C#读写Excel实践笔记 C#使用NPOI读写Excel的注意事项 如果只是单纯的打开Excel文档,建议使用: System ...
- Python语法进阶
1.变量进阶 2.局部变量.全局变量 3.函数进阶 4.函数进阶
- selenium 目录结构解释
common目录 定义了通用的异常类 webdriver目录 android.backberry.chrome.edge.firefox.ie.opera.phantomjs.safa ...