Python拥有强大的标准库。从如今起,開始学习标准库中提供的一些经常使用功能。

首先看正則表達式(regular expression),它的主要功能是从字符串(string)中通过特定的模式(pattern),搜索想要找到的内容。

比如:要从一个字符串中找出全部的数字,我们能够这样做:

import re
str = "int2str"
m = re.search("[0-9]",str)
print(m.group(0))

输出:2

re.search()接收两个參数,第一个正則表達式。是匹配条件。

re.search()假设从第二个參数是目标字符串。

返回一个对象m,通过m.group()查看搜索到的结果;没有找到。则返回None。



经常使用函数:

m = re.search(pattern, string)搜索整个字符串,直到发现符合的子字符串。

m = re.match(pattern, string)从头開始检查字符串是否符合正則表達式。必须从字符串的第一个字符開始就相符。

对于返回的m, 我们使用m.group()来调用结果。

str = re.sub(pattern, replacement, string)在string中利用正则变换pattern进行搜索,对于搜索到的字符串,用还有一字符串replacement替换。

返回替换后的字符串str。



re.split()依据正則表達式切割字符串, 将切割后的全部子字符串放在一个表(list)中返回

re.findall()依据正則表達式搜索字符串。将全部符合的子字符串放在一给表(list)中返回





正則表達式:

1)单个字符:





.          随意一个字符





a|b        字符a或字符b





[afg]      a或者f或者g的一个字符





[0-4]      0-4范围内的一个字符





[a-f]      a-f范围内的一个字符





[^m]       不是m的一个字符





s         一个空格





S         一个非空格





d         [0-9]





D         [^0-9]





w         [0-9a-zA-Z]





W         [^0-9a-zA-Z]





2)反复





紧跟在单个字符之后,表示多个这样类似的字符





*         反复 >=0 次





+         反复 >=1 次





?         反复 0或者1 次





{m}       反复m次。比方说 a{4}相当于aaaa,再比方说[1-3]{2}相当于[1-3][1-3]





{m, n}    反复m到n次。

比方说a{2, 5}表示a反复2到5次。

小于m次的反复,或者大于n次的反复都不符合条件。

比如:

[0-9]{3,5}       9678





a?b              b





a+b              aaaaab





3) 位置





^         字符串的起始位置





$         字符串的结尾位置





比如:

正则表达 相符的字符串举例
不相符字符串





^ab.*c$ abeec
cabeec





4)返回控制





有可能对搜索的结果进行进一步精简信息。比方以下一个正則表達式:

output_(d{4})





该正則表達式用括号()包围了一个小的正則表達式。d{4}。 这个小的正則表達式被用于从结果中筛选想要的信息(在这里是四位数字)。

这样被括号圈起来的正則表達式的一部分。称为群(group)。

我们能够m.group(number)的方法来查询群。group(0)是整个正则表达的搜索结果,group(1)是第一个群……

import re
m = re.search("output_([0-9]{4})", "output_1986.txt")
print(m.group(0),m.group(1))

输出:

('output_1986', '1986')





我们还能够使用(?P<name>...)为group命名,以便更好地使用m.group查询:

import re
m = re.search("output_(?P<year>[0-9]{4})", "output_1986.txt")
print(m.group("year"))

输出:1986



坚持每天都能学一点新东西。好了。今天就先到这里了。

Python学习笔记8:标准库之正則表達式的更多相关文章

  1. JAVA学习第六十五课 — 正則表達式

    正則表達式:主要应用于操作字符串.通过一些特定的符号来体现 举例: QQ号的校验 6~9位.0不得开头.必须是数字 String类中有matches方法 matches(String regex) 告 ...

  2. 使用正則表達式的格式化与高亮显示json字符串

    使用正則表達式的格式化与高亮显示json字符串 json字符串非常实用,有时候一些后台接口返回的信息是字符串格式的,可读性非常差,这个时候要是有个能够格式化并高亮显示json串的方法那就好多了,以下看 ...

  3. JavaScript正則表達式知识汇总

    Js 正則表達式知识汇总 正則表達式: 1.什么是RegExp?RegExp是正則表達式的缩写.RegExp 对象用于规定在文本中检索的内容. 2.定义RegExp:var +变量名=new RegE ...

  4. iOS_正則表達式

    iOS 正則表達式 正則表達式,又称正规表示法.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE).计算机科学的一个概念. 正則表達式使用单个字符 ...

  5. 辛星教你高速掌握PHP的正則表達式

    首先说一下,这篇文章也是我在看了数个大牛的博客之后总结出来的,因此首先向这些大牛表示崇高的敬意和感谢,因为人数众多.并且来源也是特别分散,就不一一介绍了,见谅. ************跨语言的主题* ...

  6. 【JavaScript】正則表達式

    正則表達式,也不是第一次与它见面了.在我们学习ASP.NET视频的时候,验证控件的那个实例中.就有提到过它. 那个时候.都是在控件的属性中自己设置的,用的原理就是正則表達式,当时得感觉就是方便,强大, ...

  7. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  8. shell脚本学习笔记 (正則表達式)

    正則表達式一般有三个部分组成,他们各自是:字符类,数量限定符,位置限定符. 规定一些特殊语法表示字符类.数 量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式,这就是正則表達式(Regu ...

  9. 鸟书shell 学习笔记(二) shell中正則表達式相关

    通配符与正則表達式的差别 通配符是bash原生支持的语法,正則表達式是处理字符串的一种表示方式, 正則表達式须要支持的工具支持才干够 语系设置 : export LANG=C grep alias 设 ...

随机推荐

  1. webdriver高级应用- 无人工干预地自动下载某个文件

    在网页上下载文件时,通常需要人为设定下载文件并选择保持路径,这样就无法实现完全自动的下载过程.下面实现基于firefox浏览器的全自动化文件下载操作: #encoding=utf-8 from sel ...

  2. Flask_配置文件

    flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为: default_config = ImmutableDict({ 'DEBUG': get_debug ...

  3. bootstrap3兼容ie8浏览器

    bootstrap3 兼容IE8浏览器 2016-01-22 14:01 442人阅读 评论(0) 收藏 举报  分类: html5(18)    目录(?)[+]   近期在使用bootstrap这 ...

  4. Bootstrap-datepicker 用法

    <div class="input-group input-daterange"> <input type="text" id="s ...

  5. Linux Shell系列教程之(八)Shell printf命令详解

    本文是Linux Shell系列教程的第(八)篇,更多shell教程请看:Linux Shell系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell p ...

  6. 关于iOS 7的几个开源项目

    MBSwitch   MBSwitch是一个体现了iOS 7扁平化设计风格的UISwitch,支持iOS 7以下系统.允许使用者进行颜色的深度自定义,你可以定义边框的颜色,开/关的颜色以及按钮的颜色. ...

  7. iOS学习笔记43-Swift(三)类

    一.Swift的类class 作为一门面向对象语言,类也是Swift的非常重要的类型,我们先来看下一个简单的类 //Swift中一个类可以不继承于任何其他基类,那么此类本身就是一个基类 class P ...

  8. 【bzoj1040】[ZJOI2008]骑士 并查集+基环树dp

    题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在 ...

  9. 【Bzoj3944】杜教筛模板(狄利克雷卷积搞杜教筛)

    题目链接 哇杜教筛超炫的 有没有见过$O(n^\frac{2}{3})$求欧拉函数前缀和的算法?没有吧?蛤蛤蛤 首先我们来看狄利克雷卷积是什么 首先我们把定义域是整数,陪域是复数的函数叫做数论函数. ...

  10. string流;

    string流定义在头文件<sstream>中: 可以像标准输入输出流一样,自动判别数据类型输出,遇到空格停止: 定义: stringstream ss:   //定义了一个string流 ...