python基础学习笔记(十三)

re模块包含对 正则表达式。本章会对re模块主要特征和正则表达式进行介绍。

 

什么是正则表达式

正则表达式是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。换包话说,正则表达式’python’ 可以匹配字符串’python’ 。你可以用这种匹配行为搜索文本中的模式,并且用计算后有值并发特定模式,或都将文本进行分段。

 

** 通配符

正则表达式可以匹配多于一个的字符串,你可以使用一些特殊字符创建这类模式。比如点号(.)可以匹配任何字符。在我们用window 搜索时用问号(?)匹配任意一位字符,作用是一样的。那么这类符号就叫 通配符。

 

** 对特殊字符进行转义

通过上面的方法,假如我们要匹配“python.org”,直接用用‘python.org’可以么?这么做可以,但这样也会匹配“pythonzorg”,这可不是所期望的结果。

好吧!我们需要对它进行转义,可以在它前面加上发斜线。因此,本例中可以使用“python\\.org”,这样就只会匹配“python.org”了。

 

** 字符集

我们可以使用中括号([ ])括住字符串来创建字符集。可以使用范围,比如‘[a-z]’能够匹配az的任意一个字符,还可以通过一个接一个的方式将范围联合起来使用,比如‘[a-zA-Z0-9]’能够匹配任意大小写字母和数字。

反转字符集,可以在开头使用^字符,比如‘[^abc]’可以匹配任何除了abc之外的字符。

 

** 选择符

有时候只想匹配字符串’python’ 和 ’perl’  ,可以使用选择项的特殊字符:管道符号(|) 。因此, 所需模式可以写成’python|perl’ 。

 

** 子模式

但是,有些时候不需要对整个模式使用选择符---只是模式的一部分。这时可以使用圆括号起需要的部分,或称子模式。 前例可以写成 ‘p(ython | erl)’

 

** 可选项

在子模式后面加上问号,它就变成了可选项。它可能出现在匹配字符串,但并非必须的。

r’(heep://)?(www\.)?python\.org’

只能匹配下列字符:

‘http://www.python.org’

‘http://python.org’

‘www.python.org’

‘python.org’

 

** 重复子模式

(pattern)* : 允许模式重复0次或多次

(pattern)+ : 允许模式重复1次或多次

(pattern){m,n} : 允许模式重复m~ n 

例如:

r’w * \.python\.org’  匹配 ‘www.python.org’ 、’.python.org’ 、’wwwwwww.python.org’

r’w + \.python\.org’  匹配 ‘w.python.org’ ;但不能匹配 ’.python.org’ 

r’w {3,4}\.python\.org’  只能匹配‘www.python.org’ 和‘wwww.python.org’ 

 

re模块的内容

 

re模块中一些重要的函数:

  re.compile 将正则表达式转换为模式对象,可以实现更有效率的匹配。

  re.search 会在给定字符串中寻找第一个匹配给正则表式的子字符串。找到函数返回MatchObject(值为True),否则返回None(值为False) 。因为返回值的性质,所以该函数可以用在条件语句中:

if re.serch(pat, string):

print ‘found it !’

 

  re.math 会在给定字符串的开头匹配正则表达式。因此,re.math(‘p’ , ‘python’)返回真,re.math(‘p’ , ‘www.python’) 则返回假。

  re.split 会根据模式的匹配项来分割字符串。

>>> import re
>>> some_text = 'alpha , beta ,,,gamma delta '
>>> re.split('[,]+',some_text) ['alpha ', ' beta ', 'gamma delta ']

 

  re. findall以列表形式返回给定模式的所有匹配项。比如,要在字符串中查找所有单词,可以像下面这么做:

>>> import re
>>> pat = '[a-zA-Z]+'
>>> text = '"Hm...err -- are you sure?" he said, sounding insecure.' >>> re.findall(pat,text) ['Hm', 'err', 'are', 'you', 'sure', 'he', 'said', 'sounding', 'insecure']

 

  re.sub的作用在于:使用给定的替换内容将匹配模式的子符串(最左端并且重叠子字符串)替换掉。

>>> import re
>>> pat = '{name}'
>>> text = 'Dear {name}...' >>> re.sub(pat, 'Mr. Gumby',text) 'Dear Mr. Gumby...'

 

  re.escape 函数,可以对字符串中所有可能被解释为正则运算符的字符进行转义的应用函数。

如果字符串很长且包含很多特殊字符,而你又不想输入一大堆反斜线,可以使用这个函数:

>>> re.escape('www.python.org')
'www\\.python\\.org' >>> re.escape('but where is the ambiguity?') 'but\\ where\\ is\\ the\\ ambiguity\\?'

 

 

 

匹配对象和组

 

简单来说,组就是放置在圆括号里内的子模块,组的序号取决于它左侧的括号数。组0就是整个模块,所以在下面的模式中:

‘There  (was a (wee) (cooper)) who (lived in Fyfe)’

包含组有:

0  There  was a  wee cooper  who  lived in Fyfe

1  was a  wee  cooper

2  wee

3  cooper

4  lived in Fyfe

 

re 匹配对象的重要方法

下面看实例:

复制代码
>>> import re
>>> m = re.match(r'www\.(.*)\..{3}','www.python.org') >>> m.group() 'www.python.org' >>> m.group(0) 'www.python.org' >>> m.group(1) 'python' >>> m.start(1) 4 >>> m.end(1) 10 >>> m.span(1) (4, 10)
复制代码

  group方法返回模式中与给定组匹配的字符串,如果没有组号,默认为;如上面:m.group()==m.group(0) ;如果给定一个组号,会返回单个字符串。

  start 方法返回给定组匹配项的开始索引,

  end方法返回给定组匹配项的结束索引加1

  span以元组(startend)的形式返回给组的开始和结束位置的索引。

 

----------------------------

正则表达式应该是不容易理解的一个知识点;python没意思的基础终于学完了。虽然学的不扎实,但大体有了个印象;后面的将会非常有意思,读取文件,编写图形窗口,连接数据库,web编程....

转载于:https://www.cnblogs.com/Raul2018/p/9330223.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OD debug matlab,OllyDebug基本使用方法

OD是逆向过程中最好的动态调试工具,这次来记录学习笔记。(特别鸣谢石总)1、OD的工作界面最开始要学的就是界面的使用N了吧,这里分各个框来解释下:列举各个框用处:可以看到下面一框框东西:这些一时半会用不到&#xff0…

设计模式:策略

这次我想谈谈策略设计模式 。 通过这种方式,我开始撰写有关行为设计模式的文章。 这些模式表示对象之间的某些交互模式,以使代码更灵活且组织得更好。此方法的最本质点是对象之间的松散耦合。 当您的应用程序中有多个实现目的的实现时,应使用…

css 学习整理

1、 background-attachment :fixed 属性防止背景图片这种滚动,它默认值是 scroll,也就是说,在默认的情况下,背景会随文档滚动2、font-weight 属性设置文本的粗细(关键字 100 ~ 900 为字体指定了 9 级加粗度。如果一个字…

php抓取网页中的内容

以下就是几种常用的用php抓取网页中的内容的方法。1.file_get_contentsPHP代码代码如下:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&g…

本地搭建WordPress (XAMPP环境)

1,XAMPP是一个流行的PHP开发环境,官网下载: https://www.apachefriends.org/zh_cn/index.html 然后安装。 官方介绍:XAMPP是最流行的PHP开发环境 XAMPP是完全免费且易于安装的Apache发行版,其中包含MariaDB、PHP和Pe…

php中的thumb函数,phpcms v9 thumb(缩略图) 函数说明

打开phcmsc/libs/functions/global.func.PHP文件,找到如下代码:$width_t || $height>$height_t) return $imgurl;$newimgurl dirname($imgurl_replace)./thumb_.$width._.$height._.basename($imgurl_replace);if(file_exists($upload_path.$newimgu…

CSS3 选择器——属性选择器

上一节在《CSS3选择器——基本选择器》中主要介绍了CSS3选择器的第一部分,这节主要和大家一起来学习CSS3选择器的第二部分——属性选择器。属性选择器早在CSS2中就被引入了,其主要作用就是对带有指定属性的HTML 元素设置样式。使用CSS3属性选择器&#x…

设计模式:生成器

有时需要在应用程序中创建一个复杂的对象。 一种解决方案是Factory模式,另一种是Builder设计模式。 在某些情况下,您甚至可以结合使用这两种模式。 但是在本文中,我想研究一下Builder设计模式 。 我需要说的第一件事是创造模式。 在什么情况…

Hadoop(5)--java编写hdfs程序

1、hdfs系统会把用到的数据存储在core-site.xml中由hadoop.tmp.dir指定&#xff0c;而这个值默认位于/tmp/hadoop-${user.name}下面&#xff0c; 由于/tmp目录在系统重启时候会被删除&#xff0c;所以应该修改目录位置。 修改core-site.xml(在所有站点上都修改) <property&g…

oracle10g服务安装图解,Oracle 10G服务器安装图解

Oracle 10G服务器安装图解Oracle 10g 在window 下的安装概述1.数据库概述Oracle 应用服务器 10g 是集成的、基于标准的软件平台&#xff0c;Oracle Application Server 10g 是继 Oracle9i Application Server (Oracle9iAS) Release 2.0 version 9.0.2 和 version 9.0.3 之后的最…

Java 7试用资源

Java 7为完成使用后需要关闭的资源&#xff08;例如文件&#xff0c;流&#xff0c;数据库连接和套接字&#xff09;提供了更好的资源管理。 这种语言构造称为try-with-resources语句。 完成这项工作的机制称为AutoCloseable接口。 Java 7资源类均实现此接口。 该接口的签名如下…

css平行四边形与菱形变换

*以下技巧均源自于Lea Verou所著《CSS Secrets》 平行四边形 平行四边形的构造可以基于矩形通过skew()的变形属性进行斜向拉升得到&#xff08;skew所用的坐标系&#xff0c;纵向是X轴&#xff0c;横向是Y轴&#xff0c;与常见的坐标系相反&#xff09;。 <!DOCTYPE html&g…

redis 启动配置文件加载报错 service redis does not support chkconfig

# chkconfig:2345 90 10 # description:Redis is a persistent key-value database 网上资料 上面的注释的意思是&#xff0c;redis服务必须在运行级2&#xff0c;3&#xff0c;4&#xff0c;5下被启动或关闭&#xff0c;启动的优先级是90&#xff0c;关闭的优先级是10。 附录&…

Android 获取ROOT权限原理解析

一、 概述本文介绍了android中获取root权限的方法以及原理&#xff0c;让大家对android玩家中常说的“越狱”有一个更深层次的认识。二、 Root的介绍1. Root 的目的可以让我们拥有掌控手机系统的权限&#xff0c;比如删除一些system/app下面的无用软件&#xff0c;更换开…

oracle事务提交前更新机制,Oracle 事务机制 批量添加,修改,更新

---------------------------------------------------------------------------------------------2011-12-14编辑-------------------------------------------------------------------------------------------------------------------using (OracleConnection oc new Or…

webpack实用配置

注意&#xff1a;以下内容是在vue-cli脚手架的基础上进行添加&#xff01; 1、单个文件抽离 webpack.base.conf.js里边的webpackConfig{}里边对入口文件进行配置&#xff0c;输入你想要抽离的文件&#xff0c;比如vux这个ui框架很大&#xff0c;很有必要抽离 entry: {app: ./sr…

设计模式:原型

创新设计模式之一是原型设计模式 。 尽管原型是创造模式&#xff0c;但它在概念上与其他模式有所不同。 我的意思是原型在某种意义上创造了自己。 我将在下面解释。 原型模式的所有魔力都基于Java Object的clone&#xff08;&#xff09;方法。 因此&#xff0c;让我们考虑一…

SecureCRT连接AWS EC2云主机密码登录

申请了亚马逊的EC2&#xff0c;要通过ssh 加密钥的形式登录&#xff0c;特别麻烦&#xff0c;而且感觉ssh登录AWS的云主机后好卡&#xff0c;这里是更改成用户名和密码的形式登录云主机&#xff0c;可以通过SecureCRT直接登录 1、首先通过ssh登录到EC2&#xff0c;类似于ssh -i…

母版页

一、母版页简介 使用 ASP.NET 母版页可以为应用程序中的页创建一致的布局。单个母版页可以为应用程序中的所有页&#xff08;或一组页&#xff09;定义所需的外观和标准行为。 母版之所以称为母版&#xff0c;就是将大部分网页上固定内容&#xff0c;比如导航栏&#xff0c;版…

解决python中join路径分隔符跨平台移植性

在Windows中路径分隔符是“\”&#xff0c;而Linux中则是“/”。这样一来&#xff0c;如果我们写了这样一段代码&#xff1a; 1 import os 2 3 print(os.path.join(C:\\, a, b.txt)) 在Windows中运行时是没有问题的&#xff0c;但是在Linux当中就有问题了&#xff0c;反之亦然…