python学习笔记4-正则表达式
import re -- 所有正则表达式相关的功能都包含在re模块中
re.sub() -- 字符串替换
>>> import re
>>> s= "100 NORTH BROAD ROAD"
>>> re.sub('ROAD$','RD.',s)
'100 NORTH BROAD RD.' >>> s = "100 BROAD"
>>> re.sub('\\bROUAD$','RD.',s)
'100 BROAD' >>> s='100 BROAD ROAD APT. 3'
>>> re.sub(r'\bROAD$','RD.', s)
'100 BROAD ROAD APT. 3'
>>> re.sub(r'\bROAD\b', 'RD.',s)
'100 BROAD RD. APT. 3'
注:
1) \b 表示在左边必须有一个分隔符。
2) 正则表达式前面的 ‘r'告诉python,字符串中没有任何字符需要转义。eg., '\t'是一个制表符,r'\t'是一个字符‘\‘紧跟一个字符‘t'
re.search() -- 用正则表达式来匹配字符串,如果匹配成功,则返回一个匹配对象,如果没有匹配成功,则返回none
>>> import re
>>> pattern = '^M?M?M?$'
>>> re.search(pattern, 'M')
<_sre.SRE_Match object; span=(0, 1), match='M'>
>>> re.search(pattern,'MM')
<_sre.SRE_Match object; span=(0, 2), match='MM'>
>>> re.search(pattern,'MMM')
<_sre.SRE_Match object; span=(0, 3), match='MMM'>
>>> re.search(pattern,'MMMMM')
>>> re.search(pattern,'')
<_sre.SRE_Match object; span=(0, 0), match=''>
>>> import re
>>> pattern = '^M?M?M?$'
>>> re.search(pattern, 'M')
<_sre.SRE_Match object; span=(0, 1), match='M'>
>>> re.search(pattern,'MM')
<_sre.SRE_Match object; span=(0, 2), match='MM'>
>>> re.search(pattern,'MMM')
<_sre.SRE_Match object; span=(0, 3), match='MMM'>
>>> re.search(pattern,'MMMMM')
>>> re.search(pattern,'')
<_sre.SRE_Match object; span=(0, 0), match=''>
注:
1)?-- 表示匹配可选
2) M{0,3} -- 表示匹配0~3次M
松散正则表达式:
1. 空白符被忽略。空格、制表、回车在正则表达式中并不会被匹配。如果想匹配这些字符,需要加转义字符'\'。
2.注释信息(以#开头直到行尾)被忽略。
3. 用松散正则表达式时,需要传递re.VERBOSE参数。
>>> pattern = '''
^ #beginning of string
M{0,3} #thousands - 0 to 3 Ms
(CM|CD|D?C{0,3}) #hundreds - 900(CM), 400(CD),0-300 (0 to 3 Cs) or 500-800
#(D, followed by 0 to 3 Cs )
(XC|XL|L?X{0,3}) #tens - 90(XC), 40(XL), 0-30 (0 TO 3 Xs), or 50~80
#(L, followed by 0 to 3 Xs)
(IX|IV|V?I{0,3}) #ones - 9 (IX), 4(IV),0-3 (0 to 3 Is),
#or 5~8 (V,followed by 0 to 3 Is)
$ #end of string
'''
>>> re.search(pattern, 'M', re.VERBOSE)
<_sre.SRE_Match object; span=(0, 1), match='M'>
>>> re.search(pattern, 'MCMLXXXIX', re.VERBOSE)
<_sre.SRE_Match object; span=(0, 9), match='MCMLXXXIX'>
案例:匹配电话号码
\d: -- 匹配所有0-9数字
\D: -- 匹配除了数字外所有字符
+:-- 匹配一次或多次
* : -- 匹配0次或多次
>>> phonePattern = re.compile(r'(\d{3})\D*(\d{3})\D*(\d{4})\D*(\d*)$')
>>> phonePattern.search('work 1-(800) 555.1212 #1234').groups()
('800', '555', '1212', '1234')
正则表达式符号及其含义:
$--字符串结尾
^--字符串开头
x?-- 匹配0次或一次x字符
x+:-- 匹配一次或多次x字符
x* : -- 匹配0次或多次x字符
x{m,n} -- 表示匹配m~n次x字符
x{n} -- 表示匹配n次x字符
(a|b|c) -- 表示匹配a或b或c
(x) -- 这是一个组合,被匹配到的字符串会被存储,用re.search()返回对象的groups()方法获得被匹配的值
\d: -- 匹配所有0-9数字
\D: -- 匹配除了数字外所有字符
\b: --匹配一个单词边界
python学习笔记4-正则表达式的更多相关文章
- Python学习笔记013_正则表达式
Python中的正则表达式是通过 re 模块实现的. 通配符 . 表示除了换行以外的任何字符; 编写正则表达式时使用 r're' , r + 正则表达式内容 >>> impor ...
- python学习笔记之——正则表达式
1.re模块 Python通过re模块提供对正则表达式的支持,re 模块使 Python 语言拥有全部的正则表达式功能.使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用 ...
- Python学习笔记 - day10 - 正则表达式
正则表达式 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样 ...
- Python学习笔记(正则表达式)
\b - 表示以什么开头或结尾 \d - 匹配数字 \w - 匹配字母或数字或下划线或汉字(我试验下了,发现3.x版本可以匹配汉字,但2.x版本不可以) \s - 匹配任意的空白符 ^ - 匹配字符串 ...
- Python学习笔记之正则表达式
本篇在写的时候大量参考了https://deerchao.cn/tutorials/regex/regex.htm的内容 一.什么是正则表达式 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂 ...
- 【Python学习笔记】正则表达式
Ref:https://deerchao.net/tutorials/regex/regex.htm#greedyandlazy 1. 常用元字符 2.字符转义 查找元字符本身时,需要使用\来取消这些 ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
- [Python学习笔记]正则表达式总结
常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- Python学习笔记(十一)
Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...
随机推荐
- 编程之美—烙饼排序问题(JAVA)
一.问题描述 星期五的晚上,一帮同事在希格玛大厦附近的"硬盘酒吧"多喝了几杯.程序员多喝了几杯之后谈什么呢?自然是算法问题.有个同事说:"我以前在餐 馆打工,顾 ...
- http程序接口、调用(最入门级,文末附Demo)
HTTP协议简介 既然是基于HTTP协议开发,那么就首先要了解下HTTP协议的相关内容- 在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层.浏览Web时,浏览器通过HTTP ...
- MVC5 网站开发之三 数据存储层功能实现
数据存储层在项目Ninesky.DataLibrary中实现,整个项目只有一个类Repository. 目录 奔跑吧,代码小哥! MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 ...
- 前端学HTTP之连接管理
前面的话 HTTP连接是HTTP报文传输的关键通道.要掌握HTTP就需要理解HTTP连接的来龙去脉以及如何使用这些连接 如果想查看一个网页,浏览器收到URL时,会执行下图所示的步骤.将服务器的IP地址 ...
- (转)构建自己的AngularJS,第一部分:Scope和Digest
原翻译链接:https://github.com/xufei/Make-Your-Own-AngularJS/edit/master/01.md 原文链接:http://teropa.info/blo ...
- 记一次使用 android 自带 WebView 做富文本编辑器之API、机型的兼容及各种奇葩bug的解决
转载请声明出处(http://www.cnblogs.com/linguanh/) 目录 1,测试设备介绍 2,开源项目richeditor及CrossWalk的选择 3,遇到的bug及其解决方法 4 ...
- markdown常用语法总结
转自markdown示例[模板] 1.1.段落标题 根据原文中的文档标题可以对应设置标题. # 一级标题## 二级标题### 三级标题 效果 => 一级标题 二级标题 三级标题 1.2.斜体.加 ...
- Restful Api 最佳实践
Web APIs has become an very important topic in the last year. We at M-Way Solutions are working ever ...
- deb包的安装及dpkg命令小结
DPKG commands There are two actions, they are dpkg-query and dpkg-deb. Install a package # sudo dpkg ...
- 【手记】为windows2008建个睡眠快捷方式
----------------201607041343更新---------------- 在另一台电脑上SetSystemPowerState又不好使了,执行了根本没反应.又回头来试SetSusp ...