python -模块之路 正则表达式

阐述简单模块

 什么是模块 一组功能的集合
你要和某个东西打交道,而这个东西本身和python没有关系,这个东西本身就存在
python提供了一个功能的集合 专门负责和这个东西打交道

模块的类型
内置模块 不需要我们自己安装的 解释器自带的
第三方模块 需要我们自己安装的模块
自定义模块 我们自己写的模块

是谁把所有的硬件管理起来的? 操作系统
文件 在 硬盘上存储着
从硬盘上读文件

import os # 模块
os.remove() # 删除文件
os.rename() # 重命名文件

模块实际上就是给我们提供功能
这个要操作的内容本来就存在
模块只不过是python提供给我们去操作这个内容的方法

为什么要有模块
模块怎么用

正则表达式本身也和python没有什么关系,就是匹配字符串的一种规则。
官方定义:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,
组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式:

一说规则我已经知道你很晕了,现在让我们先来看一些实际的应用。在线测试工具http://tool.chinaz.com/regex/
首先你要知道的是,谈到正则,就只和字符串相关了。在我给你提供的工具中,你输入的每一个字都是一个字符串。
其次,如果在一个位置的一个值,不会出现什么变化,那么是不需要规则的。
  比如你要用"1"去匹配"1",或者用"2"去匹配"2",直接就可以匹配上。这连python的字符串操作都可以轻松做到。
那么在之后我们更多要考虑的是在同一个位置上可以出现的字符的范围
字符组 : [字符组]
在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示
字符分为很多类,比如数字、字母、标点等等。
假如你现在要求一个位置"只能出现一个数字",那么这个位置上的字符只能是0、1、2...9这10个数之一。

字符:

量词:

. ^ $ :                                           

* + ? {} :                                      

注意: 前面的* ,+ ,?等都是贪婪匹配, 也就尽可能匹配,后面加?号使其变成惰性匹配

字符集  [ ]   [ ^ ]                                  

分组 () 与 或   |  [ ^ ]                                     

身份证号码是一个长度为15或18个字符的字符串, 如果是15位则全部有数字组成,首位不能为0;  

如果是18位 , 则前17位全部是数字,末位可能是数字或x,  下面我们尝试用正则来表示:

转义符                                                          

在正则表达式中,有很多特殊意义的是元字符,比如 d 和 s等,  如果要在正则中匹配正常的 "d" 而不是数字就需要对 " " 进行转义, 变成 " \ "。

在python中 , 无论是正则表达式, 还是待匹配的内容,都是以字符串的形式出现的, 在字符串中 也有特殊意义,本身还需要转义。 所以如果匹配一次 " d " ,字符串中要写成 " \d " ,那么正则里就要写成

"\\d",这样就太麻烦了。这个时候我们就用到了' rd '这个概念,此时的正则是'r\d'就可以了。

贪婪匹配                                                        

贪婪匹配 : 在满足匹配时, 匹配尽可能长的字符串,默认情况下,采用贪婪匹配

几个常用的非贪婪匹配pattern

*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

 . * ? 的用法

. 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x

就是取前面任意长度的字符,直到一个x出现
好了  今天先写到这哈   明天继续哈  努力到无能为力  拼搏到感动自己






原文地址:https://www.cnblogs.com/SUIFAN/p/9488726.html