python--(常用模块-3-正则表达式)

  正则表达式是对字符串操作的⼀种逻辑公式. 我们⼀般使⽤正则表达式对字符串进⾏匹
  配和过滤. 使⽤正则的优缺点:
  优点: 灵活, 功能性强, 逻辑性强.
  缺点: 上手难. 一旦上手, 会爱上这个东西
  工具: 各文本编辑器一般都有正则匹配功能. 我们也可以去
  http://tool.chinaz.com/regex/进⾏在线测试

  正则表达式由普通字符和元字符组成. 普通字符包含大小写字母, 数字. 在匹配普通字符
  的时候我们直接写就可以了. 比如"abc" 匹配的就是"abc". 我们如果用python也可以实现相
  同的效果. 所以普通字符没什么好说的. 重点在元字符上.

  元字符: 元字符才是正则表达式的灵魂. 元字符中的内容太多了, 在这里我们只介绍一些
  常用的..

1.字符组

  字符组很简单用[]括起来,在[]中出现的内容会被匹配.例如;[abc]匹配a或b或c  

  如果字符组中的内容过多还可以使⽤- , 例如: [a-z] 匹配a到z之间的所有字⺟ [0-9]
匹配所有阿拉伯数字
  思考: [a-zA-Z0-9]匹配的是什么?
2. 简单元字符
  基本的元字符. 这个东西网上一大堆,下面是几个常用的

 .       匹配除换行符以外的任意字符
\w  匹配字母或数字或下划线
\s 匹配任意的空白字符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结束
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空字符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符

  3.量词

    我们到目前匹配的所有内容都是单一的文字符号,那如何一次性匹配很多个字符呢,

我们用到量词

 *       重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{nm} 重复n到m次

  4.惰性匹配和贪婪匹配

    在量词中的*, +,{} 都属于贪婪匹配. 就是尽可能多的匹配到结果

str: 麻花藤昨天让英雄联盟关服了 reg: 麻花藤.* 此时匹配的是整句话

  在使用.*后面如果加了?则是尽可能的少匹配.表示惰性匹配

 str: 麻花藤昨天让英雄联盟关服了
reg: 麻花藤.*?
此时匹配的是 麻花藤
str: <div>胡辣汤</div>
reg: <.*>
结果: <div>胡辣汤</div>
str: <div>胡辣汤</div>
reg: <.*?>
结果
<div>
</div>
str: <div>胡辣汤</div>
reg: <(div|/div*)?>
结果:
<div>
</div>

  ..*?x的特殊含义 找到下一个x为止.

str: abcdefgxhijklmn reg: .*?x 结果:abcdefgx

5.分组

    在正则中使⽤()进⾏分组. 比如. 我们要匹配⼀个相对复杂的⾝份证号. ⾝份证号分
成两种. 老的⾝份证号有15位. 新的⾝份证号有18位. 并且新的⾝份证号结尾有可能

 给出以下正则
^[1-9]\d{13,16}[0-9x]$ ^[1-9]\d{14}(\d{2}[0-9x])?$ ^([1-9]\d{16}[0-9x]|[1-9]\d{14})$

6.转义

  在正则表达式中, 有很多有特殊意义的是元字符, ⽐如\n和\s等,如果要在正则中匹
配正常的"\n"⽽不是"换⾏符"就需要对"\"进⾏转义, 变成'\\'.在python中, ⽆论是正则表达式, 还
是待匹配的内容, 都是以字符串的形式出现的, 在字符串中\也有特殊的含义, 本身还需要转

义. 所以如果匹配一次"\n", 字符串中要写成'\\n', 那么正则⾥就要写成"\\\\n",这样就太麻烦了.
这个时候我们就⽤到了r'\n'这个概念, 此时的正则是r'\\n'就可以了

练习:
1. 匹配邮箱
2. 匹配手机号
3. 匹配生日.日期格式(yyyy-MM-dd)
4. 匹配电话号码
5. 匹配IP

  

python--(常用模块-3-正则表达式)的更多相关文章

  1. python常用模块二正则表达式

    正则表达式 常用的正则元字符 # =================================匹配模式================================= #一对一的匹配 # 'h ...

  2. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  3. Python常用模块大全

    Python常用模块大全 os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.c ...

  4. Python常用模块小结

    目录 Python常用模块小结 一.Python常用模块小结 1.1 time模块 1.2 datetime模块 1.3 random模块 1.4 os模块 1.5 sys模块 1.6 json模块 ...

  5. Python常用模块之sys

    Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...

  6. Python常用模块中常用内置函数的具体介绍

    Python作为计算机语言中常用的语言,它具有十分强大的功能,但是你知道Python常用模块I的内置模块中常用内置函数都包括哪些具体的函数吗?以下的文章就是对Python常用模块I的内置模块的常用内置 ...

  7. python——常用模块2

    python--常用模块2 1 logging模块 1.1 函数式简单配置 import logging logging.debug("debug message") loggin ...

  8. python——常用模块

    python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的 ...

  9. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

  10. python 常用模块之random,os,sys 模块

    python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...

随机推荐

  1. python pymysql存储

    # _*_ coding:utf-8 _*_ import requests from bs4 import BeautifulSoup import re import pymysql def cr ...

  2. 06005_Jedis入门

    1.Jedis介绍 (1)Redis不仅是使用命令来操作.现在基本上主流的语言都有客户端支持,比如Java.C.C#.C++.PHP.Node.js.Go等: (2)在官方网站里列有一些Java的客户 ...

  3. ZOJ 3891 K-hash

    K-hash Time Limit: 2000ms Memory Limit: 131072KB This problem will be judged on ZJU. Original ID: 38 ...

  4. POJ 1320

    作弊了--!该题可以通过因式分解得到一个佩尔方程....要不是学着这章,估计想不到.. 得到x1,y1后,就直接代入递推式递推了 x[n]=x[n-1]*x[1]+d*y[n-1]*y[1] y[n] ...

  5. Wing IDE配置空格取代tab缩进+护眼背景色

    打开Wing IDE后,进入"编辑"列的"偏好设置"页面,如图1所看到的: 图1 设置用4个spaces取代tab, 如图2所看到的 图2 设置保护眼睛的绿色, ...

  6. VMware-workstation安装

    下载:百度搜索VMware-workstation 开始安装:VMware-workstation-full_12.5.5.17738 更改安装目录F:\softwore\VMware\VMware ...

  7. hdu2688 Rotate(树状数组)

    题目链接:pid=2688">点击打开链接 题意描写叙述:对一个长度为2<=n<=3000000的数组,求数组中有序对(i<j而且F[i]<F[j])的数量?其 ...

  8. VC与JavaScript交互(一) ———— 怎样实现

    为什么要让VC与JavaScript交互? 1.有时候我们须要让自己的软件打开一个网页.来获取页面上的一些数据. 这时,能够用mshtml解析HTML提取出数据.也能够向HTML文档动态写入我们准备好 ...

  9. Android持久化保存cookie

    在解析网页信息的时候,需要登录后才能访问,所以使用httpclient模拟登录,然后把cookie保存下来,以供下一次访问使用,这时就需要持久化cookie中的内容. 在之前先科普一下基础知识: 什么 ...

  10. 解决 Eclipse 导入项目后 Maven Dependencies missing jar 问题

    转自:https://yq.aliyun.com/ziliao/314086 话不多说直接上图 上图是我通过git导入项目后, Maven Dependencies Library中很多包出现miss ...