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 学习笔记(上) 基础知识 基本输入输出 模 ...
随机推荐
- ionic上拉加载组件 ion-infinite-scroll自动调用多次的问题
参考文章地址:http://www.cnblogs.com/luleixia/p/6402418.html ionic 一个上拉刷新的组件 ion-infinite-scroll,如果页面未填充满页面 ...
- Vue 中渲染字符串形式的组件标签
在vue中如果要渲染字符串形式的标签,vue 提供了 v-html 指令,可以很方便的渲染出来.但是如果这个标签是一个组件,或者element-ui 的组件时,就不能解析出来了,因为v-html 只能 ...
- py-day4-2 python 内置函数
zip() #zip 拉链方法 一一对应 只要是序列类型的都可以 print(list(zip(('a','b','c'),(1,2,3)))) 结果: [('a', 1), ('b', 2), (' ...
- http://blog.csdn.net/u012905422/article/details/53340260
轉自:http://blog.csdn.net/u012905422/article/details/53340260 对于python2.7版本,很多教程(如http://stackoverflow ...
- Sql Server查看死锁及堵塞脚本
--每秒死锁数量 SELECT * FROM sys.dm_os_performance_counters WHERE counter_name LIKE 'Number of Deadlocksc% ...
- 【C++】类中this指针的理解
转自 苦涩的茶https://www.cnblogs.com/liushui-sky/p/5802981.html C++类中this指针的理解 先要理解class的意思.class应该理解为一种类型 ...
- php7带来的性能升级
前言本文是一篇讲座听后+后续研究的总结. 话说当年追时髦,php7一出就给电脑立马装上了,php5和php7共存,也是立马写了个超级耗时间的循环脚本测了一番,确实php7给力很多,然后也是注意了一些新 ...
- Linux下mysql的root密码修改方法(ERROR 1054)
#1.停止mysql数据库 /etc/init.d/mysqld stop #2.执行如下命令 mysqld_safe --user=mysql --skip-grant-tables --skip- ...
- MFC如何添加背景图片
1.在xxDlg.h中定义CBrush m_brush 2.在对话框的消息响应中添加一个ON_WM_CTLCOLOR消息响应 3.添加背景图(方法前一篇随笔有讲到) 4.OnCtlColor消息响应函 ...
- Axure原型设计工具介绍
Axure原型设计工具介绍 1759230茅杭斌 目录 1.前言 2.下载与激活 3. Axure相关功能介绍 4.Axure案例演示 5.结语 一.前言 在我们进行程序开发的时候,原型图是必不可少的 ...