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-正则表达式的更多相关文章

  1. Python学习笔记013_正则表达式

    Python中的正则表达式是通过 re 模块实现的. 通配符 .  表示除了换行以外的任何字符; 编写正则表达式时使用  r're'  , r + 正则表达式内容 >>> impor ...

  2. python学习笔记之——正则表达式

    1.re模块 Python通过re模块提供对正则表达式的支持,re 模块使 Python 语言拥有全部的正则表达式功能.使用re的一般步骤是先将正则表达式的字符串形式编译为Pattern实例,然后使用 ...

  3. Python学习笔记 - day10 - 正则表达式

    正则表达式 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样 ...

  4. Python学习笔记(正则表达式)

    \b - 表示以什么开头或结尾 \d - 匹配数字 \w - 匹配字母或数字或下划线或汉字(我试验下了,发现3.x版本可以匹配汉字,但2.x版本不可以) \s - 匹配任意的空白符 ^ - 匹配字符串 ...

  5. Python学习笔记之正则表达式

    本篇在写的时候大量参考了https://deerchao.cn/tutorials/regex/regex.htm的内容 一.什么是正则表达式 在编写处理字符串的程序或网页时,经常会有查找符合某些复杂 ...

  6. 【Python学习笔记】正则表达式

    Ref:https://deerchao.net/tutorials/regex/regex.htm#greedyandlazy 1. 常用元字符 2.字符转义 查找元字符本身时,需要使用\来取消这些 ...

  7. 【目录】Python学习笔记

    目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...

  8. [Python学习笔记]正则表达式总结

    常用缩写字符及其含义表格查询 缩写字符分类 含义 \d 0-9的任意数字 \D 除0-9的数字以外的任何字符 \w 任何字母.数字或下划线字符(可以认为是匹配"单词"字符) \W ...

  9. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  10. Python学习笔记(十一)

    Python学习笔记(十一): 生成器,迭代器回顾 模块 作业-计算器 1. 生成器,迭代器回顾 1. 列表生成式:[x for x in range(10)] 2. 生成器 (generator o ...

随机推荐

  1. Livecoding.tv 现正举行iOS及Android App设计比赛

    近日,Livecoding.tv, 一个为世界各地的程序员提供在线实时交流的平台,在其网站上发布了一篇通知, 宣布从4月15日至5月15日,会为iOS和Android的开发者举办一场本地移动app设计 ...

  2. 【Win 10 应用开发】透视效果

    所谓透视效果,就是在平面坐标空间上模拟出“好像”三维的效果.要是老周没有记错的话,以前在写WP8相关的内容时写过,UWP中的透视方法也保留了以前的Do法,其实这玩意儿是从 Silverlight 沿袭 ...

  3. 纪录我的iOS学习之路

    学习资料的网址 田伟宇(Casa Taloyum)有几篇介绍iOS架构的文章,一级棒!原博客链接. iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方 ...

  4. 为WLW开发Latex公式插件

    WLW是写博客的利器,支持离线.格式排版等,而且拥有众多的插件.博客园推荐了代码插入插件,但是没有提供WLW的公式编译插件.目前我的一般做法是:先在Word下使用MathType编辑好公式,然后将公式 ...

  5. CSS实现图片缩放特效

    今天是感恩节,祝大家感恩节快乐哦!最近天冷了,大家注意保暖哟.下面一起看看小颖写的demo吧. html代码: <!DOCTYPE html> <html> <head& ...

  6. HTTP的长连接和短连接

        本文总结&分享网络编程中涉及的长连接.短连接概念.     关键字:Keep-Alive,并发连接数限制,TCP,HTTP 一.什么是长连接 HTTP1.1规定了默认保持长连接(HTT ...

  7. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  8. 设置eclipse中自动添加get,set的注释为字段属性的注释

    一:说明 首先具体来看一下是什么效果,上图可能会更清楚一点 就是在get/set中自动加上属性的注释,那我们要怎么配置呢? 二:配置 2.1:下载附件 下载附件 2.2:替换class 原生的ecli ...

  9. ASP.NET Core 中文文档 第三章 原理(15)请求功能

    作者:Steve Smith 翻译:谢炀(kiler398) 校对:姚阿勇(Dr.Yao).孟帅洋(书缘) 涉及到如何处理 HTTP 请求以及响应的独立 Web 服务器功能已经被分解成独立的接口,这些 ...

  10. golang 使用 iota

    iota是golang语言的常量计数器,只能在常量的表达式中使用. iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(io ...